微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数组 – 使用键数组遍历嵌套的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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐