【发布时间】:2021-03-11 17:34:56
【问题描述】:
我正在尝试编写一个方法,该方法将嵌套散列作为输入并返回带有添加“深度”键的散列。所以,例如:
hash = {
a: 1,
b: 2,
c: { d: { e: 3 } }
}
会返回:
{
a: 1,
b: 2,
c: {
d: {
e: 3,
depth: 2
},
depth: 1
},
depth: 0
}
这是我想出的一些代码,它适用于这种情况,或者任何其他深度不超过 2 的散列,但我以错误的方式处理它。我正在尝试弄清楚如何使它适用于任何深度。
def depth(hash)
hash.values.to_a.map!{|elem| if elem.class==Hash; elem.values.to_a.map!{|el| el.class==Hash ? el[:depth] = 2 : elem}; elem[:depth] = 1; else; elem; end}
hash[:depth] = 0
p hash
end
您可以假设输入是哈希。谢谢:-)
【问题讨论】:
-
为什么急于选择答案?您认为它无法改进吗?您不希望看到其他解决方案吗?您可以随时更改您的选择,但考虑到做出选择并不紧迫,简单地推迟决定不是更好吗?大多数提问者至少要等待几个小时,甚至更长的时间,让世界各地当时还在睡觉的成员有机会提供解决方案。