以下代码创建一个hashmap并将其放在自身内部。
hash = {}
hash[hash] = hash
hash.keys.first == hash # true
hash.values.first == hash # true
hash[hash] # nil??
hash.key?(hash) # False
hash[hash.keys.first] # nil???
hash[{}] # nil
有人可以向我解释这些结果吗?他们似乎非常违反直觉。
答案 0 :(得分:5)
可变对象(例如--archives
和Array
)基本上是不合适的
如果您可以修改它们,则使用哈希键。在这种情况下,哈希在插入时被修改(因为它被插入自身!)因此被置于不正确的状态。
如果绝对必要,您可以使用Hash#rehash
来纠正对象状态:
Hash