1
我有一個FO-程序拋出一個錯誤,當它接近這條線:珠璣-ERP:條件拋出意外錯誤
.continue ERR1 ? F|defined(M|yhnum) & M|yhnum > 10
的錯誤是
M | yhnum:找不到
爲什麼會出現這種情況?我想,如果我檢查,如果變量被訪問之前定義它不會發生,但它似乎並不像它的工作
我有一個FO-程序拋出一個錯誤,當它接近這條線:珠璣-ERP:條件拋出意外錯誤
.continue ERR1 ? F|defined(M|yhnum) & M|yhnum > 10
的錯誤是
M | yhnum:找不到
爲什麼會出現這種情況?我想,如果我檢查,如果變量被訪問之前定義它不會發生,但它似乎並不像它的工作
這裏的問題就是,FO不使用短路評價。這意味着,它總是會檢查是否M|yhnum
比10大,即使沒有定義它。顯然,如果沒有定義,這將會失敗。
從文檔:
這意味着,一個布爾表達式將被完全評估即使最終的結果已經可以從中間結果看出。這與定義的()相關。
使用F|condexpr
手動實現短路評價
.continue ERR1 ? F|condexpr(F|defined(M|yhnum), M|yhnum > 10, G|false)