如果我有:
map = Hash.new { [] }
它表明地图[' a'](或任何其他任意键)被初始化为[],正如我预期的那样。但是当我尝试用以下内容更新它时:
map['a'] << 15
然后我的地图根本没有变化。这应该是吗?我做错了什么吗?当实际密钥不存在时,即使它应该具有默认值,这是不支持的吗?
答案 0 :(得分:1)
这不是你如何使用块来初始化哈希。该块接收新的哈希值和正在访问的密钥,并将其留下来定义相关值。
您需要以下内容:
map = Hash.new { |hash,key| hash[key] = [] }
答案 1 :(得分:1)
您可以使用块来初始化哈希{|h,k| h[k] = [] }
或者您可以执行map['a'] = 15
这将允许地图成为a
指向15
的哈希