Ruby中如何用dig处理数组索引,避免nil:NilClass错误并返回nil?
安全嵌套访问哈希与数组的方法
Ruby 的 dig 方法本身就支持同时处理哈希键和数组索引,直接传入对应层级的参数即可实现你要的需求,无需额外处理:
@params.dig(:people, 0, :email)
具体效果验证
- 若
@params中不存在:people键,该调用直接返回nil - 若
:people是空数组,访问索引0时会返回nil,整个方法最终返回nil - 若数组第一个元素没有
:email键,同样返回nil - 所有层级都存在时,会正常返回对应的邮箱字符串
dig 的核心逻辑是:依次遍历传入的每个访问参数,每一步如果遇到 nil 就立即终止并返回 nil,不会继续执行后续的 [] 调用,从根源上避免了 undefined method '[]' for nil:NilClass 这类错误。
内容的提问来源于stack exchange,提问作者Akram
相关产品推荐
相关产品推荐

