可能重複:
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,ke y2和key3存在於散列(es)中,但如果key1不存在?
然後我會得到NoMethodError: undefined method [] for nil:NilClass
。沒有人喜歡這個。
到目前爲止,我處理這個做一個條件,如:
if my_hash['key1'] && my_hash['key1']['key2']
...
這是適當的,有沒有這樣做的任何其他方式Rubiest?
對不起社區。我試圖尋找這個,並找不到它。如果合適,關閉。 – Nobita 2012-04-12 20:48:12
接受的答案提到除了正確的Ruby 2.3+之外的每種可能的方法:http://ruby-doc.org/core-2.3.1/Hash.html#method-i-dig – 2017-01-08 22:13:12