📜  Euphoria-短路评估

📅  最后修改于: 2020-11-04 07:48:01             🧑  作者: Mango


 

使用运算符通过if,elsif,直到或来测试条件时,将使用短路评估。例如-

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

如果a <0为假,则欣快感不会费心测试b是否大于0。它知道总体结果为假。类似地-

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

如果a <0为true,则幸福感会立即确定结果为true,而无需测试b的值,因为该测试的结果无关紧要。

通常,只要您具有以下形式的条件-

A and B

其中A和B可以是任何两个表达式,当A为假时,欣快感会成为捷径,并立即使整体结果为假,甚至不看表达式B。

类似地,只要您具有以下形式的条件-

A or  B

在A为真的情况下,欣快感会跳过对表达式B的求值,并声明结果为真。

仅在if,elsif,直到和while条件下对and和or进行短路评估。在其他上下文中不使用它。例如-

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},这是错误的。

因此,可以在条件,条件,条件或条件中使用短路,因为您只需要关心结果是对还是错,并且需要条件来产生原子。