Ruby && vs And
Para expresiones booleanas o control de flujo, se pueden usar tanto &&
como and
.
La diferencia entre ellos es el orden de precedencia. El operador and
tiene menor precedencia que =
, mientras que &&
tiene mayor precedencia que el operador =
.
Considere estas dos expresiones booleanas.
puts var_1 = true && false
puts var_2 = true and false
Producción :
false
true
Ambas expresiones devuelven false
, pero var_1
y var_2
tendrán asignados valores diferentes.
Si var_1 = true && false
es equivalente a var_1 = (true && false)
, var_1
es igual a false
.
En cambio, var_2 = true y false
se evaluará como (var_2 = true) y false
. Esto significa que var_2
contendrá finalmente el valor true
.
puts var_1
puts var_2
Producción :
false
true
Por esta razón, nunca use y
con un operador ternario como este.
s = true and 2.even? ? 'even' : 'odd'
puts s
Producción :
true
Podemos esperar que imprima even
, pero en su lugar, devuelve true
.