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]
rdd.mapPartitions 从 Spark Scala 中的 udf 返回布尔值
ifdef 中的布尔值:“#ifdef A && B”是不是与“#if defined(A) && defined(B)”相同?