像这样设置哈希值的默认值:
hash = Hash.new { |hsh, key| hsh[key] = {} }
当访问一个未知的键时,它会创建(并分配)一个新的哈希表,但是对于创建的哈希表中的未知键,它会返回nil
:
hash[:unkown_key] #=> {}
hash[:unkown_key][:nested_unknown] #=> nil
我可以这样让它在第二层级别上运行:
hash = Hash.new do |hsh, key|
hsh[key] = Hash.new { |nest_hsh, nest_key| nest_hsh[nest_key] = {} }
end
但是,在第三层级别它不起作用:
hash[:unkown_key][:nested_unknown] #=> {}
hash[:unkown_key][:nested_unknown][:third_level] #=> nil
如何使其在任意级别上运作?
hash[:unkown_key][:nested_unknown][:third_level][...][:nth_level] #=> {}
:infinity
是一个符号,不是一个数字;-) - Markus:infinity
替换为:nth_level
,希望这样更清晰明了。 - Stefan