Euphoria短路計算


當條件測試由 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,須出示原子和條件 .