Scala - Booleans - &vs &&,| vs ||

Tra*_*rks 19 boolean scala operators

我刚刚注意到Scala Boolean支持&&&.这两个运营商之间有区别吗?Scala文档对它们使用完全相同的描述,所以我不确定.

Lee*_*Lee 28

&|严格,而&&||有短路:

false && (throw new Exception()) => false
false & (throw new Exception()) => ex

true || (throw new Exception()) => true
true | (throw new Exception()) => ex
Run Code Online (Sandbox Code Playgroud)

完整的文档,&|有一个说明解释此行为:

即使在评估a之后已经确定了结果,该方法也会评估a和b.