Recentemente ho scoperto che Java (e Scala) includono operatori logici senza cortocircuito &
, |
e ^
. In precedenza ho pensato che funzionassero solo come operatori bit a bit. Mentre forse c'è un argomento per ^
, non riesco a pensare a dei buoni motivi per usare operatori logici senza cortocircuiti - sebbene sia sicuro, posso inventare un esempio.Esistono buoni usi per operatori logici (booleani) non a corto circuito in Java/Scala?
Questi operatori sono utili? Sembrano più propensi a causare bug difficili da catturare.
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, gli operatori bit a bit devono essere utilizzati solo per operazioni bit a bit, IMHO :) –
Le uniche risposte possibili a questa domanda sono esempi specifici di "operatori non cortocircuitanti sono utili quando non si desidera cortocircuiti". Quindi la vera domanda è "quando non vuoi cortocircuiti"? –