Ruby && vs And

Stewart Nguyen 18 abril 2022
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.