簡體   English   中英

為什么我不能把哈希作為一個鍵放在自己里面呢?

[英]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

aa[a] = a之前和之后是不同a[a] = a 所以,你需要更新a關鍵的a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM