![](/img/trans.png)
[英]Why can't I use an integer as a key using the new Ruby 1.9.2 hash syntax?
[英]Why can't I put a hash inside itself as a key?
我可以使用哈希作為鍵和值:
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
。
為什么會這樣? 我沒有這方面的用例,我只是好奇為什么哈希不能用作它自己的密鑰。
這不是你不能。 您只需在修改哈希中的可變鍵后重新進行重新哈希。
a = {}
b = {}
a[b] = b
a[:a] = a
a[a] = a
a.rehash
# => {{}=>{}, :a=>{...}, {...}=>{...}}
a[a] == a
# => true
a
在a[a] = a
之前和之后是不同a[a] = a
。 所以,你需要更新a
關鍵的a
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.