Euphoria - 短路的評估



當條件由 if、elsif、untilwhile 使用andor 運算子進行測試時,將使用短路評估。例如 −

if a < 0 and b > 0 then
   -- block of code
end if

如果 a < 0 為假,那麼 Euphoria 不會費心去測試 b 是否大於 0。它知道無論如何總體結果都是假的。同樣 −

if a < 0 or b > 0 then
   -- block of code
end if

如果 a < 0 為真,那麼 Euphoria 立即決定結果為真,而不會測試 b 的值,因為此測試的結果無關緊要。

一般來說,每當你遇到以下形式的條件時 −

A and B

其中 A 和 B 可以是任意兩個表示式,當 A 為假時,Euphoria 會採取捷徑,並且立即使總體結果為假,甚至不考慮表示式 B。

同樣地,每當遇到以下形式的條件時 −

A or  B

其中 A 為真,Euphoria 會跳過對錶達式 B 的評估,並將結果宣告為真。

並且和或的短路評估僅用於 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 條件中使用,因為你只需要關心結果是真還是假,並且條件需要產生原子作為結果。

廣告