检查嵌套的哈希键

时间:2017-03-31 10:12:56

标签: ruby

我有一个哈希yaml,有时候会像:

{"foo" => {"bar" => 10}}

有时喜欢:

{"foo" => nil}

我想根据"bar"是否存在来执行某项操作。

我写这段代码:

if yaml["foo"] && yaml["foo"].key?["bar"]
...

我想知道是否有一种惯用的方式来处理这种条件,特别是第一部分,我必须检查父键的存在。

1 个答案:

答案 0 :(得分:2)

对于像你这样的案件,

Hash#dig非常方便:

hash = {"foo" => {"bar" =>  { "baz" => 10}}}
hash.dig('foo', 'bar', 'baz')
#=> 10

请注意,如果在dig ging的任何时刻它返回nil,该方法将不会爆炸但只返回nil

hash.dig('foo', 'baz')
#=> nil