我有一个哈希:
a = {
"person" => [
{
"age" => ["0"],
"details" => [
{
"hobby" => ["6"],
"interest" => ["programming"]
}
]
}
]
}
我想获得“细节”的价值。简单的方法是
a["person"].first["details"].first
但是,它太长了,看起来并不好看。还有其他办法吗?
答案 0 :(得分:3)
从哈希获取值的原始代码对我来说没问题。如果你想做更好的事情,那只能修改哈希:
a = {"person"=>{"age"=>["0"], "details"=>{"hobby"=>["6"], "interest"=>["programming"]}}}
然后您可以更好地获取访问权限:
a['person']['details'] #=> {"hobby"=>["6"], "interest"=>["programming"]}
答案 1 :(得分:3)
如果您的搜索条件基于哈希结构,最简单的方法就是在访问命令中表示您所做的事情。
如果你想减少几个字符,这里是:
a["person"][0]["details"][0]
如果您的搜索条件基于键名,您可以在Hash类中创建自己的函数来搜索嵌套的哈希值,并执行以下操作:
a.search(:details).first
如果您不喜欢方括号,请使用https://github.com/intridea/hashie并通过属性访问哈希数据:
a.person.first.details.first
无论如何,你什么也做不了,因为你的代码对任何rubyist都很常见。