gpt4 book ai didi

ruby - 如何检查哈希中的嵌套属性?

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:34 25 4
gpt4 key购买 nike

我需要检查属性的嵌套散列

      empty = if @body &&
@body["#{@path}_response".to_sym] &&
@body["#{@path}_response".to_sym]["#{@path}_result".to_sym] &&
@body["#{@path}_response".to_sym]["#{@path}_result".to_sym][:error][:error_code].eql?'NoAvailibilitiesFound'

true
else
false
end

我要检查的实际属性是:error。但也有可能

@body["#{@path}_response".to_sym]

甚至不存在。所以我检查每个级别的属性

我觉得这有点奇怪。是否有一种优雅的“ ruby ”方式可以做得更好?

最佳答案

我同意@Paul,你应该使用Hash#fetch . Paul 提到使用默认值,但认为它可能过于复杂。实际上,它非常简单:只需将默认值设置为空哈希,如下所示:

h = { a: { b: {c: 1} } } #=> {:a=>{:b=>{:c=>1}}}

h.fetch(:a, {}).fetch(:b, {}).fetch(:c, false) #=> 1
h.fetch(:a, {}).fetch(:b, {}).fetch(:d, false) #=> false
h.fetch(:a, {}).fetch(:d, {}).fetch(:c, false) #=> false
h.fetch(:d, {}).fetch(:b, {}).fetch(:c, false) #=> false

这里我假设如果键 :a:b:c 将返回 1 > 出现在各自的级别; else false 将被返回。

关于ruby - 如何检查哈希中的嵌套属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23689855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com