У меня есть вопрос о том, как интерпретатор Рубин присваивает переменные:рубин присвоение переменной в условном «если» модификатор
Я использую это довольно часто:
return foo if (foo = bar.some_method)
где some_method возвращает объект или ноль.
Однако, когда я пытаюсь это:
return foo if (true && (foo = bar.some_method))
я получаю: NameError определено локальная переменная или метод Foo для главного: Object.
В чем разница в оценке между первой и второй строками, которая вызывает ошибку второй линии?
Потому что назначение будет короткозамкнутым во втором варианте. Но я не уверен, что это образец, который поддается чтению. –