自动创建深哈希

散列具有请求但不存在的键的默认值(nil):

a = {}
p a[ :b ] # => nil 

创建新哈希时,可以指定默认值:

b = Hash.new 'puppy'
p b[ :b ]            # => 'puppy'

Hash.new 还有一个块,它允许你自动创建嵌套的哈希,比如 Perl 的自动修改行为或者 mkdir -p

# h is the hash you're creating, and k the key.
#
hash = Hash.new { |h, k| h[k] = Hash.new &h.default_proc }
hash[ :a ][ :b ][ :c ] = 3

p hash # => { a: { b: { c: 3 } } }