📅  最后修改于: 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},这是错误的。
因此,可以在条件,条件,条件或条件中使用短路,因为您只需要关心结果是对还是错,并且需要条件来产生原子。