当条件测试由 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,须出示原子和条件 .