Да, переменная экземпляра @a_hash
и локальная переменная x
сохраняют ссылку на тот же экземпляр Hash
и при изменении этого экземпляра (используя метод мутатора merge!
, который изменяет объект на месте), эти переменные будут оценены в одно и то же значение.
Возможно, вы захотите использовать merge
метод, который создает копию объекта и не меняет исходную:
@a_hash = {:a => 1}
x = @a_hash
y = x.merge({:b => 2})
# y => {:a => 1, :b => 2}
# x and @a_hash => {:a => 1}