ruby - 有没有办法初始化哈希的所有子节点?

标签 ruby hash

必须一直初始化子元素是多余的。我的意思是:

@parent = Hash.new{ |h,k| h[k] = Hash.new(&h.default_proc) }

如果我尝试创建另一个多维节点,我会尝试编码:

@parent[:child][some_field] = "Some example data..."

我总是收到这个错误:

undefined method `[]=' for nil:NilClass (NoMethodError)

你有什么解决办法吗?

最佳答案

我经常需要嵌套哈希,为什么不定义自己的类?

class NestedHash < Hash  
  def initialize
    super { |h,k| h[k] = Hash.new(&h.default_proc) }
  end
end

h = NestedHash.new
h[:foo][:bar] = :baz
h[:foo][:bar] #=> :baz

关于ruby - 有没有办法初始化哈希的所有子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34239611/

相关文章:

php - 我可以检查哈希密码是否等于 laravel 中的特定值吗?

ruby - 比较哈希数组并打印预期结果和实际结果

ruby-on-rails - 关于使用 Ruby on Rails 的 HTTPS 连接的建议

ruby - 如何在 ruby​​ 中解析符号

ruby - 如何删除数组哈希中的部分?

scala - 如何在 Scala 中使用反射获取所有对象 val 和子对象 val?

ruby-on-rails - Rake 任务失败没有要加载的文件 -- nokogiri/nokogiri for Rails 2.2.2

ruby - 最长的循环数字

java - Android Facebook key 哈希—— "remote_app_id does not match stored id"

arrays - 如何在 Ruby 中找到哈希数组的平均值