當條件測試由 if, elsif, until 或 while 使用 and 或 or 操作符, 短路計算將被使用。例如:
if a < 0 and b > 0 then -- block of code end if |
如果 a < 0 是 false,那麼Euphoria 不會刻意去測試,如果 b 大於0。它會知道,總的結果是 false。同理:
if a < 0 or b > 0 then -- block of code end if |
如果 a < 0 為 true, Euphoria 將立即決定,結果為 true,沒有測試b的值,因為這個測試的結果會是不相干的。
每當我們有一個條件的形式:
A and B |
其中 A 和 B 可以是任何兩個表示式,Euphoria 將採取短切當A 為 false,並立即做出整體結果 false,看也不看表達B.
同樣,每當我們有一個條件的形式:
A or B |
當A為 true,Euphoria 會跳過表示式B 的計算,並宣布結果是 true .
短路計算(Short-circuit)發生,if, elsif, until 和 while 唯一的條件。在其他情況下它不被使用。例如:
x = 1 or {1,2,3,4,5} -- x should be set to {1,1,1,1,1} |
如果短路,用在這裡,我們將設定x為1,連看都不看{1,2,3,4,5},這是錯誤的。
因此,短路可在 if/elsif/until/while 條件,因為我們只關心如果結果是真的還是 false,須出示原子和條件 .