ruby – 将Hashmap放入自身会导致奇怪的行为
发布时间:2020-12-17 02:57:19 所属栏目:百科 来源:网络整理
导读:以下代码创建一个hashmap并将其放在自身内部. hash = {}hash[hash] = hashhash.keys.first == hash # truehash.values.first == hash # truehash[hash] # nil??hash.key?(hash) # Falsehash[hash.keys.first] # nil???hash[{}] # nil 任何人都可以向我解释这
以下代码创建一个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 任何人都可以向我解释这些结果吗?他们似乎非常违反直觉. 解决方法
可变对象(如Array和Hash)基本上是不合适的
如果您可以修改它们,则使用哈希键.在这种情况下,哈希在插入点被修改(因为它被插入自身!),因此处于不正确的状态. 如果绝对必要,可以使用 hash = {} hash[hash] = hash hash.rehash # !!!! hash.keys.first == hash # true hash.values.first == hash # true hash[hash] #=> {{...}=>{...}} hash.key?(hash) # true hash[hash.keys.first] #=> {{...}=>{...}} hash[{}] # nil (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |