让我说我有
hsh = {}
hsh.fetch(:foobar){{}}
=> {}
是否有hsh.fetch(:somekey){{}}
的简写?
当我开始链接事物时会很有用,即
get_product.fetch(:description){{}}.fetch(:summary){{}}
答案 0 :(得分:4)
根据文件
hsh.fetch(:foobar,{})
答案 1 :(得分:4)
crackmind的回答是你问题的正确答案。但是您的示例看起来似乎正在寻找一种方便的方法来挖掘嵌套哈希。
如果您已经使用Ruby >= 2.3
,则可能需要使用dig
。来自documentation of Hash#dig
(请注意,dig
,Array
和OpenStruct
上也定义了Struct
):
通过在每一步调用dig来提取由idx对象序列指定的嵌套值,如果任何中间步骤为nil,则返回nil。
h = { foo: {bar: {baz: 1}}} h.dig(:foo, :bar, :baz) #=> 1 h.dig(:foo, :zot, :xyz) #=> nil g = { foo: [10, 11, 12] } g.dig(:foo, 1) #=> 11
您可以重新编写示例
get_product.fetch(:description){{}}.fetch(:summary){{}}
dig
就像这样:
get_product.dig(:description, :summary) || {}