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

前端之家收集整理的这篇文章主要介绍了哈希使用数组作为红宝石的关键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用数组作为其键的哈希.当我更改数组时,哈希值不能再获得相应的键值:
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

猜你在找的Ruby相关文章