2015-09-14 167 views
0

有沒有方法可以判斷散列中散列是否是嵌套散列?確定散列是否是紅寶石中的嵌套散列

例如

a = { a: 1, b: 2, c: 2 } 

應該返回false

a = { a: {a1: 1, a2: 2}, b: {b1: 1}, c: 2 } 

應返回true

+2

如果'h = {:a => [{:b = 3}]}'? –

+0

嗯這是我沒有考慮過的邊緣情況。對於我的問題,儘管 –

回答

4
a.any? { |_, v| v.is_a?(Hash) } 
1

您可以通過遍歷您的哈希值與Hash#values方法檢查:

a.values.any? { |v| v.is_a?(Hash) } 
+0

應該是不可能的,但這樣做可以很好地使用[Hash#each_value](http://ruby-doc.org/core-1.8.7/Hash.html#method-i-each_value )來避免創建臨時數組。 –