当前位置: 首页 > 面试题库 >

Java / Scala中非短路逻辑(布尔)运算符有很好的用途吗?

姬俊远
2023-03-14
问题内容

我最近发现,爪哇(和Scala)包括非短路逻辑运算符&|^。我以前认为这些只能用作按位运算符。虽然可能有一个论点^,但我想不出使用非短路逻辑运算符的很好理由-
尽管可以肯定,但我可以做一个例子。

这些运算符有用吗?它们似乎更可能导致难以捕获的错误。

scala> def foo = {
     |   println("foo")
     |   true
     | }
foo: Boolean

scala> def bar = {
     |   println("bar")
     |   true
     | }
bar: Boolean

scala> foo || bar
foo
res5: Boolean = true

scala> foo | bar
foo
bar
res6: Boolean = true

问题答案:

如果右侧是您要执行的副作用(例如记录),则它们很有用。但是,我建议这有点代码味道,对下一个家伙肯定是不直观的。



 类似资料:
  • 问题内容: 哪一组短路,这到底意味着复杂的条件表达式短路了? 问题答案: 在与运营商“短路”,这意味着如果没有必要,他们不评价的右手边。 在与运营商,如逻辑运算符时,始终评估两侧。 每个操作员只有一种短路情况,它们是: -不必知道右侧是什么,结果必须是 -不必知道右侧是什么,结果必须是 让我们在一个简单的示例中比较行为: 第二个版本使用非短路运算符,并将抛出,但第一个版本将无例外地返回;

  • 给出静态编程语言中的编译错误(意外标记(使用';'分隔同一行上的表达式))

  • 我正在使用熊猫中的布尔索引。 问题是为什么声明: 很好,但是 错误退出? 例子:

  • 哪个集合是短路的,复杂条件表达式是短路的确切含义是什么?

  • 问题内容: 我正在Pandas中使用布尔值索引。问题是为什么要声明: 工作正常而 错误退出? 例: 问题答案: 当你说 你暗中要求Python进行转换并转换为布尔值。 NumPy数组(长度大于1)和对象(例如)没有布尔值-换句话说,它们引发 当用作布尔值时。那是因为不清楚何时应该为True或False。如果某些用户的长度非零,则可能会认为它们为True,例如Python列表。其他人可能只希望其所有

  • 本文向大家介绍JavaScript 逻辑非运算符(!),包括了JavaScript 逻辑非运算符(!)的使用技巧和注意事项,需要的朋友参考一下 示例 逻辑NOT(!)运算符对表达式执行逻辑取反。 语法: 返回值: 一个Boolean。 描述 逻辑NOT(!)运算符对表达式执行逻辑取反。 布尔值只需取反即可:!true === false和!false === true。 非布尔值首先转换为布尔值,