Scala - 布尔值 - & vs &&, |与 ||

Posted

技术标签:

【中文标题】Scala - 布尔值 - & vs &&, |与 ||【英文标题】:Scala - Booleans - & vs &&, | vs || 【发布时间】:2014-09-23 22:01:28 【问题描述】:

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

【问题讨论】:

是的。惰性/短路 (&&) 和完整 (&) 评估,就像 Java 一样。 @user2864740 你指的是短路吗? 【参考方案1】:

&| 是严格的,而 &&|| 是短路的:

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

true || (throw new Exception()) => true
true | (throw new Exception()) => ex

&| 的完整文档有注释解释这种行为:

此方法同时计算 a 和 b,即使结果已经是 评估后确定。

【讨论】:

啊,不知道你可以扩展这些部分......完全错过了箭头。

以上是关于Scala - 布尔值 - & vs &&, |与 ||的主要内容,如果未能解决你的问题,请参考以下文章

类型不匹配。必需:布尔值,在 Scala 中找到:Future[Boolean]

Scala用if else返回布尔值

Scala中函数类型的类型别名[关闭]

rdd.mapPartitions 从 Spark Scala 中的 udf 返回布尔值

检查三个布尔值中的两个是不是为真?

ifdef 中的布尔值:“#ifdef A && B”是不是与“#if defined(A) && defined(B)”相同?