abas-ERP:条件抛出意外错误
abas-ERP: condition throwing unexpected error
我有一个 FO 程序在接近此行时抛出错误:
.continue ERR1 ? F|defined(M|yhnum) & M|yhnum > 10
错误是
M|yhnum: not found
为什么会这样?我以为如果我在访问它之前检查变量是否被定义就不会发生,但它似乎并没有起作用
这里的问题是,FO 不使用短路评估。这意味着它将始终检查 M|yhnum
是否大于 10,即使未定义也是如此。显然,如果未定义,这将失败。
来自文档:
This means that a Boolean expression will be completely evaluated even if the final result can already be seen from the intermediate result. This is significant in connection with defined().
使用F|condexpr
手动实现短路评估
.continue ERR1 ? F|condexpr(F|defined(M|yhnum), M|yhnum > 10, G|false)
我有一个 FO 程序在接近此行时抛出错误:
.continue ERR1 ? F|defined(M|yhnum) & M|yhnum > 10
错误是
M|yhnum: not found
为什么会这样?我以为如果我在访问它之前检查变量是否被定义就不会发生,但它似乎并没有起作用
这里的问题是,FO 不使用短路评估。这意味着它将始终检查 M|yhnum
是否大于 10,即使未定义也是如此。显然,如果未定义,这将失败。
来自文档:
This means that a Boolean expression will be completely evaluated even if the final result can already be seen from the intermediate result. This is significant in connection with defined().
使用F|condexpr
手动实现短路评估
.continue ERR1 ? F|condexpr(F|defined(M|yhnum), M|yhnum > 10, G|false)