У меня есть хэш, который использует массив в качестве ключа. Когда я изменяю массив, хэш больше не может получить соответствующий ключ и значение:
1.9.3p194 :016 > a = [1, 2]
=> [1, 2]
1.9.3p194 :017 > b = { a => 1 }
=> {[1, 2]=>1}
1.9.3p194 :018 > b[a]
=> 1
1.9.3p194 :019 > a.delete_at(1)
=> 2
1.9.3p194 :020 > a
=> [1]
1.9.3p194 :021 > b
=> {[1]=>1}
1.9.3p194 :022 > b[a]
=> nil
1.9.3p194 :023 > b.keys.include? a
=> true
Что я делаю неправильно?
Обновление: ОК. Использовать a.clone - это абсолютно один из способов решения этой проблемы. Что делать, если я хочу изменить "a" , но все равно использовать "a" для получения соответствующего значения (поскольку "a" все еще является одним из ключей)?