2

我有一个哈希:

a = {
  "person" => [
    {
      "age"     => ["0"],
      "details" => [
        {
          "hobby"    => ["6"],
          "interest" => ["programming"]
        }
      ]
    }
  ]
}

我想获得“细节”的价值。最简单的方法是

a["person"].first["details"].first 

但是,它太长了,看起来不太好。我还有其他方法可以做到这一点吗?

4

2 回答 2

3

从哈希中获取价值的原始代码对我来说看起来不错。如果您想做更好的事情,只需修改哈希:

a = {"person"=>{"age"=>["0"], "details"=>{"hobby"=>["6"], "interest"=>["programming"]}}}

然后您可以以更好的方式获得访问权限:

a['person']['details'] #=> {"hobby"=>["6"], "interest"=>["programming"]}
于 2012-05-24T22:06:46.433 回答
3

如果您的搜索条件基于哈希结构,最简单的方法是在访问命令中表示您所做的这个结构。

如果你想要少几个字符,这里是:

a["person"][0]["details"][0]

如果您的搜索条件基于键名,您可以在 Hash 类中创建自己的函数来搜索嵌套哈希并执行以下操作:

a.search(:details).first

如果您不喜欢方括号,请使用https://github.com/intridea/hashie并通过属性访问哈希中的数据:

a.person.first.details.first

无论如何,你什么都做不了,因为你的代码对于任何 ruby​​ist 来说看起来都很平常。

于 2012-05-24T22:13:38.333 回答