gpt4 book ai didi

ruby - 返回子数组而不检查 nil

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

我使用以下不同版本的代码在哈希数组中查找特定条目,然后返回不同的哈希值或子数组。这种多级数组/哈希结构在使用 XMLSimple 导入 XML 时很常见(例如,我无法控制数据结构的组织方式)。

这将在任何时候 find 无法找到结果时导致错误:

value = ary.find {|r| r["rail"][0] == lookup_rail}["id"][0]

这将使用 tap 工作,但随着越来越多的子数组和子哈希变得越来越丑陋。

ary.find {|r| r["rail"][0] == lookup_rail}.tap do |f|
value = f.nil? ? nil : (f["id"].nil? nil : f["id"][0])
end

如果我引用一个 nil 对象的子数组(不添加到 NilClass),有没有办法不让程序出错?

有没有办法检查子数组条目是否存在,然后执行任何赋值操作?

最佳答案

使用 && 怎么样?

x = {"id" => ["train"]}
x && x["id"] && x["id"][0]
# => "train"

x = {"id" => nil}
x && x["id"] && x["id"][0]
# => nil

x = nil
x && x["id"] && x["id"][0]
# => nil

ary.find {|r| r["rail"][0] == lookup_rail}.tap do |f|
value = f && f["id"] && f["id"][0]
end

关于ruby - 返回子数组而不检查 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23452370/

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