estoy tratando de evaluar la expresión (a=10) || (rr=20)
mientras que la variable no está definida rrHace || operador evalúa el segundo argumento incluso si el primer argumento es verdadero?
por lo que escribir en la consola rr
rubí antes de evaluar la expresión anterior devuelve
rr
NameError: undefined local variable or method `rr' for main:Object
from (irb):1
from :0
Cuando escribo la expresión (a=10) || (rr=20)
se devuelve 10, y cuando escribo rr después se dice nil
(a=10) || (rr=20)
rr # => nil
es así, ¿por qué sucede esto? No debería definirse rr solo si el segundo argumento de || operador se evalúa, que nunca debe basarse en la documentación?
Existe una diferencia entre las operaciones condicional en cortocircuito (no se evalúa la segunda condición si la primera es falsa) y no se declara una variable. Tu problema se relaciona con el segundo problema. – DOK
Saber cuándo una variable local está en su alcance es complicado en Ruby. Intenta ejecutar 'a + 1 si a = 5'. Es de esperar que establezca un 5 y luego un 6, pero en realidad establecerá 'a' y ENTONCES se quejará de que' a' no está definido. –