我在编写一个类来迭代哈希或嵌套哈希的哈希时遇到了麻烦,这里是我的哈希示例。
hash = {a => {:number => 1, :color => "blue", :language => english} b => {:number => 2, :color => "red", :language => english}
我想编写将返回每个父级的数字的类方法
答案 0 :(得分:1)
你需要的只是一个方法,而不是一个类。以下是您可以使用的几种方法。
def numbers(h)
Hash[h.map { |k,v| [k, v[:number]] }]
end
h = { :a => {:number => 1, :color => "blue", :language => "english" },
:b => {:number => 2, :color => "red", :language => "english" } }
numbers(h)
#=> {:a=>1, :b=>2}
或使用Ruby 2.1:
def numbers(h)
h.map { |k,v| [k, v[:number]] }.to_h
end
另一种返回相同哈希的方法:
def numbers(h)
h.each_with_object({}) { |(k,v),g| g[k] = v[:number] }
end