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 и т. Д.?

Ответы на вопрос(3)

Ваш ответ на вопрос