编写一个迭代哈希散列的类

时间:2014-10-05 19:10:55

标签: ruby class hash

我在编写一个类来迭代哈希或嵌套哈希的哈希时遇到了麻烦,这里是我的哈希示例。

 hash = {a => {:number => 1, :color => "blue", :language => english} b => {:number => 2, :color => "red", :language => english}

我想编写将返回每个父级的数字的类方法

1 个答案:

答案 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