2D关联数组。 2哈希不起作用

时间:2013-12-03 01:11:26

标签: ruby

t = Hash.new { Hash.new }
t['x']['y'] = 1
print "#{t['x']['y']}"

print "#{t['x']['y']}什么都不产生,为什么......?我只想要2d关联数组。

1 个答案:

答案 0 :(得分:2)

它没有产生任何结果,因为根据http://www.ruby-doc.org/core-2.0.0/Hash.html#method-c-new

中的以下文档片段,在不存在的键的情况下提供默认值修改哈希值
  

如果指定了一个块,则将使用哈希对象调用它   键,应该返回默认值。这是街区   如果需要,有责任将值存储在哈希值中。

要获得您正在寻找的效果,您需要执行以下操作:

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