我可以使用哈希作为键和值:
a = {}
b = {}
a[b] = b
a #=> {{}=>{}}
a[b] == b #=> true
我甚至可以将哈希作为值放在其中:
a[:a] = a
a #=> {{}=>{}, :a=>{...}}
a == a[:a] #=> true
但是我不能把哈希作为一个关键词放在其中:
a[a] = a
a #=> {{}=>{}, {...}=>{...}}
a[a] #=> nil
a[a] == a #=> false
在这种情况下,我希望a == a[a] #=> true
。
为什么会这样?我没有这个用例,我只是好奇为什么哈希不能用作它自己的密钥。
答案 0 :(得分:7)
不是你不能。您只需在修改哈希值中的可变密钥后重新进行重新连接。
a = {}
b = {}
a[b] = b
a[:a] = a
a[a] = a
a.rehash
# => {{}=>{}, :a=>{...}, {...}=>{...}}
a[a] == a
# => true
a
在a[a] = a
之前和之后有所不同。因此,您需要更新a
的{{1}}密钥。