加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 03:50:22 所属栏目:百科 来源:网络整理
导读:给定具有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
给定具有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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读