Пример разъяснит вопрос:Пользовательские Struct не может установить STRUCT элемент
Val = Struct.new(:value) do
def inc
p value
value = value + 1
end
end
v = Val.new(1)
v.inc
Выход будет:
1
undefined method `+' for nil:NilClass (NoMethodError)
Почему я получаю эту ошибку, когда value
явно не ноль ? Есть ли способ сделать эту работу?
Мое единственное остающееся замешательство: почему «я». не подразумевается, как это обычно бывает? является ли это правило неприменимым к операторам присваивания вообще? – Jonah
Если вызов метода (с неявным 'self'-приемником) имел приоритет над локальной переменной, тогда не было бы способа вызвать эту переменную. – sawa
ну, это может сработать, если вы запретили имена меток затенения локальными варами, не так ли? но я получаю вашу точку – Jonah