传递哈希键作为参数以打印出哈希值

时间:2017-07-18 16:42:34

标签: ruby

我试图在作为参数传递给方法时打印出哈希键的值。

例如count_arara(3)会导致'adak anane'

def count_arara(n, h = {})
 h.each do |k, v| 
  if n == h[k]
    h[v]
   end
  end
end


count_arara(3, {

  1 => 'anane',
  2 => 'adak',
  3 =>'adak anane',
  4 =>'adak adak',
  5 =>'adak adak anane',
  6 =>'adak adak adak',
  7 =>'adak adak adak anane',
  8 =>'adak adak adak adak'

})

在没有告诉我答案的情况下,有没有人能帮助我走向正确的方向?

1 个答案:

答案 0 :(得分:0)

哈希是一种保持相关联的结构。

CODE_TO_NAME = {
  'CH' => 'SWITZERLAND',
  'DE' => 'GERMANY',
  ...
}

此处国家/地区代码(双字母字符串)是查找完整国家/地区名称的关键。 ' CH'是瑞士'瑞士'等等。

要打印两个字母代码的长国名,您可以这样做:

puts CODE_TO_NAME['CH']

这将打印"瑞士"。

现在在您的示例中,您循环遍历所有键/值对。如果密钥(3匹配与该密钥关联的值。

您可能想要做类似的事情:

hash.each do |key, value|
  if key == number
    puts "value: #{value}"
  end
end

但这过于复杂,并且有一种更容易的方法来查找与特定键相关联的值(这是哈希的用途):

puts hash[key]

我认为这应该足以重新考虑你的方法。此外,您应该为方法和参数提供更具描述性的名称。