配列をキーとして使用するハッシュがあります。配列を変更すると、ハッシュは対応するキーと値を取得できなくなります。
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 を使用することは、この問題に対処する 1 つの方法です。「a」を変更したいが、「a」を使用して対応する値を取得したい場合はどうすればよいですか (「a」はまだキーの 1 つであるため)。