我有一个FO程序,当它接近这一行时会抛出错误:
.continue ERR1 ? F|defined(M|yhnum) & M|yhnum > 10
错误是
M | yhnum:未找到
为什么会这样?我认为如果在访问变量之前检查变量是否定义就不会发生,但它看起来似乎不起作用
答案 0 :(得分:2)
这里的问题是,FO没有使用短路评估。这意味着它将始终检查M|yhnum
是否大于10,即使它未定义。显然,如果没有定义,这将失败。
来自文档:
这意味着即使从中间结果中已经可以看到最终结果,也将完全评估布尔表达式。这与defined()。
有关
使用F|condexpr
手动实现短路评估
.continue ERR1 ? F|condexpr(F|defined(M|yhnum), M|yhnum > 10, G|false)