Recientemente descubrí que Java (y Scala) incluyen operadores lógicos sin cortocircuito &
, |
y ^
. Anteriormente pensé que estos solo funcionaban como operadores bit a bit. Aunque tal vez haya un argumento para ^
, no puedo pensar en buenas razones para usar operadores lógicos que no sean de cortocircuito, aunque estoy seguro de que puedo dar un ejemplo.¿Hay buenos usos para los operadores lógicos (booleanos) sin cortocircuito en Java/Scala?
¿Estos operadores son útiles? Parece más probable que causen errores difíciles de atrapar.
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
No, los operadores bit a bit solo deben usarse para operaciones bit a bit, IMHO :) –
Las únicas respuestas posibles a esta pregunta son ejemplos específicos de "operadores sin cortocircuito son útiles cuando no se desea un cortocircuito". Entonces, la verdadera pregunta es "¿cuándo no quieres un cortocircuito?" –