2017-07-18 101 views
0

我試圖打印出作爲參數傳遞給方法時散列鍵的值。傳遞散列鍵作爲參數打印出散列值

例如count_arara(3)會導致「埃達克安恩」

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' 

}) 

誰能好心把我推到正確的方向沒有告訴我答案?

+0

那麼'n'應該是你的情況?它是散列還是密鑰?你自然需要兩者。 –

+0

我傳遞n作爲一個散列,包含鍵和值。 – Benjamints

+0

「例如count_arara(3)應該導致'adak anane'」? –

回答

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] 

我認爲這應該是足夠的重新考慮你的方法還你應該給方法和參數的詳細描述性的名稱