я поставил хэш в метод:|| = с хэш завернутые в методе
def example
@_hash ||= {:a => {}, :b => {}}
end
Я называю этот хэш от другого метода, и добавить ключ/значение суб-хэш следующим образом:
example[:a][:c] = "test"
Это изменит хэш:
{:a => {:c => "test"}, :b => {}}
Я не понимаю, почему я все еще могу обновить :c
хэш с помощью вызова метода снова выглядеть примерно так:
example[:a][:c] = "test2" #=> {:a => {:c => "test2"}, :b => {}}
Это странно, потому что равно/или оператор не должен присвоить значения снова, если @_hash
не nil
/false
. Поэтому я предполагаю, что мы делаем example.[]= method
, чтобы изменить значение индивидуальной хэш-клавиши/значения. Если это правда, то почему это, что, когда я удалить ||=
из метода хэш следующим образом:
def example
@_hash = {:a => {}, :b => {}}
end
ничего не изменилось?
ok Получаю благодарность – Steve007