t = Hash.new { Hash.new }
t['x']['y'] = 1
print "#{t['x']['y']}"
print "#{t['x']['y']}
什么都不产生,为什么......?我只想要2d关联数组。
答案 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}