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