哈希使用数组作为红宝石的关键

我有一个使用数组作为其键的哈希.当我更改数组时,哈希值不能再获得相应的键值:
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”仍然是其中的一个)?

解决方法

#rehash方法将重新计算哈希值,所以在更改密钥之后:
b.rehash

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...