2015-09-14 115 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 )来避免创建临时数组。 –