Недавно я обнаружил, что 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