Ruby Style: Jak sprawdzić, czy istnieje zagnieżdżony element skrótu

Rozważmy „osobę” zapisaną w haszy. Dwa przykłady to:

fred = {:person => {:name => "Fred", :spouse => "Wilma", :children => {:child => {:name => "Pebbles"}}}}
slate = {:person => {:name => "Mr. Slate", :spouse => "Mrs. Slate"}} 

Jeśli „osoba” nie ma dzieci, element „dzieci” nie jest obecny. Więc dla pana Slate'a możemy sprawdzić, czy ma rodziców:

slate_has_children = !slate[:person][:children].nil?

A co, jeśli nie wiemy, że „łupek” jest hashem „osoby”? Rozważać:

dino = {:pet => {:name => "Dino"}}

Nie możemy już łatwo sprawdzić dzieci:

dino_has_children = !dino[:person][:children].nil?
NoMethodError: undefined method `[]' for nil:NilClass

Jak więc sprawdzić strukturę skrótu, zwłaszcza jeśli jest on głęboko zagnieżdżony (nawet głębiej niż przykłady tutaj przedstawione)? Może lepsze pytanie brzmi: co to jest „rubinowy sposób”, aby to zrobić?

questionAnswers(15)

yourAnswerToTheQuestion