为什么我的地图中的数组值不会更新?

时间:2016-08-29 22:59:27

标签: ruby

如果我有:

map = Hash.new { [] }

它表明地图[' a'](或任何其他任意键)被初始化为[],正如我预期的那样。但是当我尝试用以下内容更新它时:

map['a'] << 15

然后我的地图根本没有变化。这应该是吗?我做错了什么吗?当实际密钥不存在时,即使它应该具有默认值,这是不支持的吗?

2 个答案:

答案 0 :(得分:1)

这不是你如何使用块来初始化哈希。该块接收新的哈希值和正在访问的密钥,并将其留下来定义相关值。

您需要以下内容:

map = Hash.new { |hash,key| hash[key] = [] }

答案 1 :(得分:1)

您可以使用块来初始化哈希{|h,k| h[k] = [] }

或者您可以执行map['a'] = 15这将允许地图成为a指向15的哈希