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?
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.
Ruby parser defines var when it sees it on the lefthand side of an expression (even though its inside of a conditional that doesn’t run). So nil looks an appropriate value.