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.