I have the following simple snippet:
var = 1 if false
I would expect this to evaluate as:
(var = 1) if false
so var
would be undefined. However, var
gets defined and receives a nil
as its value.
What am I missing here?
Ruby recognizes local variables during parsing. So, in your case, even thouogh it's not set to 1
(because the precedence of this expression is like you wrote), ruby knows that it's local variable and doesn't raise NameError
.