Я получаю NameError: undefined local variable or method
с ruby 2.1.2
Как отмечено в этом вопросе, выражения типа:
bar if bar = true
вызывает ошибку локальной переменной undefined (при условии, что bar
не определена ранее), поскольку bar
считывается парсером до его назначения. И я считаю, что с этим выражением не было никакой разницы:
bar if bar = false
Разница между ними заключается в том, оценивается ли основное тело или нет, но не имеет значения, если локальная переменная undefined сразу же вызывает ошибку перед оценкой условия.
Но когда я запускаю второй код на Ruby 2.1.2, он не вызывает ошибку. Так было раньше? Если да, то в чем состояла дискуссия по разбору? Если нет, изменилась ли спецификация Ruby? Есть ли какая-то ссылка на это? Что он сделал в 1.8.7, 1.9.3 и т.д.?