加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:53:29 所属栏目:百科 来源:网络整理
导读:我有一个使用数组作为其键的哈希.当我更改数组时,哈希值不能再获得相应的键值: 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
我有一个使用数组作为其键的哈希.当我更改数组时,哈希值不能再获得相应的键值:
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读