它并非没有它的警告(如果你从其他地方收到哈希值,它就不起作用),但一个常见的解决方案是:
hash = Hash.new {|h,k| h[k] = h.class.new(&h.default_proc) } hash[:data][:user][:value] = "Bob" p hash # => { :data => { :user => { :value => "Bob" } } }