我有一个哈希yaml
,有时候会像:
{"foo" => {"bar" => 10}}
有时喜欢:
{"foo" => nil}
我想根据"bar"
是否存在来执行某项操作。
我写这段代码:
if yaml["foo"] && yaml["foo"].key?["bar"]
...
我想知道是否有一种惯用的方式来处理这种条件,特别是第一部分,我必须检查父键的存在。
答案 0 :(得分:2)
Hash#dig
非常方便:
hash = {"foo" => {"bar" => { "baz" => 10}}}
hash.dig('foo', 'bar', 'baz')
#=> 10
请注意,如果在dig
ging的任何时刻它返回nil
,该方法将不会爆炸但只返回nil
:
hash.dig('foo', 'baz')
#=> nil