数组 – 使用键数组遍历嵌套的Ruby哈希

给定具有n级嵌套值的哈希,字段名称和路径

contact = {
  "Email" => "bob@bob.com","Account" => {
    "Exchange" => true,"Gmail" => false,"Team" => {
      "Closing_Sales" => "Bob Troy","Record" => 1234
    }
  }
}

field = "Record"
path = ["Account","Team"] #Must support arbitrary path length

如何定义一个方法来检索路径末尾的字段值.

def get_value(hash,field,path)
  ?
end

get_value(contact,"Record",["Account","Team"])
=> 1234

解决方法

让我们将“字段”视为“路径”的最后一个元素.那就简单了

def grab_it(h,path)
  h.dig(*path)
end

grab_it contact,"Team","Record"]
  #=> 1234 
grab_it contact,"Rabbit"]
  #=> nil
grab_it(contact,"Team"]
  # => {"Closing_Sales"=>"Bob Troy","Record"=>1234} 
grab_it contact,["Account"]
  #=> {"Exchange"=>true,"Gmail"=>false,"Team"=>{"Closing_Sales"=>"Bob Troy",#    "Record"=>1234}}

在v2.3中添加Hash#dig.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...