考虑一个存储在哈希表中的“人”对象。以下是两个例子:
fred = {:person => {:name => "Fred", :spouse => "Wilma", :children => {:child => {:name => "Pebbles"}}}}
slate = {:person => {:name => "Mr. Slate", :spouse => "Mrs. Slate"}}
如果“人”没有子元素,“children”元素将不会出现。 因此,对于Slate先生,我们可以检查他是否有父母:slate_has_children = !slate[:person][:children].nil?
那么,如果我们不知道“slate”是一个“person”哈希,会怎样呢?考虑以下情况:
dino = {:pet => {:name => "Dino"}}
我们现在无法轻易地检查子元素:
dino_has_children = !dino[:person][:children].nil?
NoMethodError: undefined method `[]' for nil:NilClass
那么,您如何检查哈希表的结构,特别是如果它嵌套得很深(甚至比这里提供的示例更深)?也许一个更好的问题是:用“Ruby方式”如何实现这个?