【发布时间】:2014-09-23 22:01:28
【问题描述】:
我刚刚注意到在 Scala 中 Boolean 支持 & 和 &&。这两个运营商有区别吗? Scala 文档对它们都使用了完全相同的描述,所以我不确定。
【问题讨论】:
-
是的。惰性/短路 (&&) 和完整 (&) 评估,就像 Java 一样。
-
@user2864740 你指的是短路吗?
我刚刚注意到在 Scala 中 Boolean 支持 & 和 &&。这两个运营商有区别吗? Scala 文档对它们都使用了完全相同的描述,所以我不确定。
【问题讨论】:
& 和 | 是严格的,而 && 和 || 是短路的:
false && (throw new Exception()) => false
false & (throw new Exception()) => ex
true || (throw new Exception()) => true
true | (throw new Exception()) => ex
& 和 | 的完整文档有注释解释这种行为:
此方法同时计算 a 和 b,即使结果已经是 评估后确定。
【讨论】: