2016-06-28 71 views
-1

我想輸出一個字符串文本,我在其中使用哈希值(查找)中的值。散列鍵在輸入數組中。Ruby - 如何使用數組值作爲哈希查找中的鍵

期望的結果將是「你好約翰」,但我採取的方法是行不通的。任何建議來糾正這個?

input = [44,55] 
lookup = { 44 => "Dave", 55 => "John" } 
puts "Hello #{lookup[input[1]]}" 
+0

解決了!我在原始代碼中輸入了一個錯字,失去了一個小時。我在這篇文章中提出的解決方案實際上是有效的。 我將在7分鐘內關閉此問題(我可以儘快關閉它)。抱歉花費你的時間。 –

回答

2

你的方法也適用於我irb

2.2-head :001 > input = [44,55] 
=> [44, 55] 
2.2-head :002 > lookup = { 44 => "Dave", 55 => "John" } 
=> {44=>"Dave", 55=>"John"} 
2.2-head :003 > puts "Hello #{lookup[input[1]]}" 
Hello John 

要遍歷你的鑰匙,使用此:

input.each do |key| 
    puts "Hello #{lookup[key]}" 
end 

=> Hello Dave 
=> Hello John 
0

你確定它不工作?

irb(main):001:0> input = [44,55] 
=> [44, 55] 
irb(main):002:0> lookup = { 44 => "Dave", 55 => "John" } 
=> {44=>"Dave", 55=>"John"} 
irb(main):003:0> puts "Hello #{lookup[input[1]]}" 
Hello John 
0

如果你想帶引號印刷使用Kernel#p

input = [44,55] 
lookup = { 44 => "Dave", 55 => "John" } 
p "Hello #{lookup[input[1]]}" #=> "Hello John" 
0

事情是這樣的話,要分隔符,你需要一個方法參數()或者什麼也沒有,[]

def lookup key 
    hash = { 44 => "Dave", 55 => "John" } 
    hash[key] 
end 

input = [44, 55] 
puts "Hello #{lookup(input[1])}" 

還是你的意思是這樣的

lookup = { 44 => "Dave", 55 => "John" } 
puts "Hello #{lookup[input[1]]}" 
相關問題