ruby – 这个哈希是怎么回事?
发布时间:2020-12-17 02:55:28 所属栏目:百科 来源:网络整理
导读:参见英文答案 Strange,unexpected behavior (disappearing/changing values) when using Hash default value,e.g. Hash.new([])????????????????????????????????????4个 我使用默认值为空数组创建一个新哈希. h = Hash.new([]) 我将一个值推入哈希,其中键是
参见英文答案 >
Strange,unexpected behavior (disappearing/changing values) when using Hash default value,e.g. Hash.new([])????????????????????????????????????4个
>我使用默认值为空数组创建一个新哈希. h = Hash.new([]) >我将一个值推入哈希,其中键是’a’. h['a'].push(1243) > h是空的. h # => {} > h [‘a’]返回预期值. h['a'] # => [1243] > h.keys返回一个空数组. h.keys # => [] 如果我在第一步中使用Hash.new {| h,k |初始化哈希h [k] = []}然后返回预期值. 解决方法
请注意,与块不同,所有参数仅在方法调用之前进行一次计算.
>在步骤1中,您将指定特定数组作为默认值.此数组实例将用于默认值h.请注意,由于您尚未使用块设置默认值,因此调用键值对不会将其分配给哈希. 将您的代码与此进行比较: h = Hash.new{|h,k| h[k] = []} 每次调用先前未调用的密钥时,它将生成一个新数组,并将该键值对分配给散列. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |