Есть ли хорошее применение для логических (логических) операторов без короткого замыкания в Java / Scala?
Недавно я обнаружил, что Java (и 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