【发布时间】:2012-04-25 05:18:30
【问题描述】:
可能重复:
Ruby: Nils in an IF statement
Is there a clean way to avoid calling a method on nil in a nested params hash?
假设我尝试访问这样的哈希:
my_hash['key1']['key2']['key3']
如果 key1、key2 和 key3 存在于散列中,这很好,但如果 key1 不存在怎么办?
然后我会得到NoMethodError: undefined method [] for nil:NilClass。没有人喜欢这样。
到目前为止,我通过以下条件处理这个问题:
if my_hash['key1'] && my_hash['key1']['key2'] ...
这样合适吗,还有其他 Rubiest 方法吗?
【问题讨论】:
-
接受的答案提到了所有可能的方法,除了 Ruby 2.3+ 的正确方法:ruby-doc.org/core-2.3.1/Hash.html#method-i-dig
标签: ruby hash conditional