【发布时间】:2012-12-05 09:27:20
【问题描述】:
获取由点分隔的所有Hash 键(带有嵌套)的列表的便捷方法是什么?
鉴于我有一个哈希:
{ level1: { level21: { level31: 'val1',
level32: 'val2' },
level22: 'val3' }
}
表示哈希中所有关键路径的所需输出(字符串数组):
level1.level21.level31
level1.level21.level32
level1.level22
我目前的解决方案:
class HashKeysDumper
def self.dump(hash)
hash.map do |k, v|
if v.is_a? Hash
keys = dump(v)
keys.map { |k1| [k, k1].join('.') }
else
k.to_s
end
end.flatten
end
end
它也可用作gist(带有规格)。
【问题讨论】:
-
请不要链接到您的代码,而是将它的摘要版本添加到您的问题中,格式正确,这样我们就可以快速访问它,而不必追逐它。这有助于我们帮助您,也有助于保持您的问题的相关性。如果该链接失效,您的问题将无法供日后寻找类似问题答案的人使用。
-
实际上,您的解决方案对我来说看起来不错。你有什么特别想改变的吗? (我同意@theTinMan 的观点,您应该将其添加到您的问题中)。
-
@theTinMan 感谢我编辑问题的提示
-
@MarkThomas 我实际上对我的解决方案很满意,但很好奇是否可以更清洁地完成这项工作