2013-12-14 63 views
-3

我想紅寶石,我想要求用戶輸入,如果輸入匹配一個值,然後打印出來的關鍵...我怎麼做?紅寶石,如果輸入是關鍵然後打印值

類似:

numbers = { 1 => :one, 2 => :two, 3 => :three, 4=> :four, 5 => :five, 6=> :six, 7=> :seven, 8 => :eight, 9=> :nine }; 

input = gets.chomp 
case input 
when 1 
then #print the related value 
end 

感謝

+2

你舉的例子是不好的,因爲它確實就像你在開始寫的對面。 –

+0

爲什麼這麼挑剔?你覺得正確嗎?鍵值,鍵值對我無關緊要。如果我得到的方法和正確的方法,我可以把它翻譯成鍵或值....也感謝您的時間 –

回答

-3

如果您需要打印鍵做到這一點:如果你需要爲功能鍵打印值做到這一點

numbers = { 1 => :one, 2 => :two, 3 => :three, 4=> :four, 5 => :five, 6=> :six, 7=> :seven, 8 => :eight, 9=> :nine } 

puts gets.chomp.to_i 
# 1 
# => nil 

numbers = { 1 => :one, 2 => :two, 3 => :three, 4=> :four, 5 => :five, 6=> :six, 7=> :seven, 8 => :eight, 9=> :nine } 

puts numbers[ gets.chomp.to_i ] 
# 1 
# one 
# => nil 

同樣但是這個de故障值打印出來:

numbers = { 1 => :one, 2 => :two, 3 => :three, 4=> :four, 5 => :five, 6=> :six, 7=> :seven, 8 => :eight, 9=> :nine } 

puts (numbers[ gets.chomp.to_i ] || "The key isn't found") 

# 10 
# The key isn't found" 
# => nil 

另外,請參考Ruby Wiki Book

+0

謝謝!很棒! –

+1

這在功能上是正確的。但是,您可以使用哈希#提取而不是依賴於||和零的錯誤。 'number.fetch(key)'會在密鑰不包含在散列內的情況下引發KeyError,或者可以提供一個參數來代替:'haystack.fetch(needle,:tumbleweed)'。 –

+0

downvotes如何改善答案? –

-1

據我所知,你需要在哈希中搜索一個值,然後返回相應的鍵。

numbers = { 1 => :one, 2 => :two, 3 => :three, 4=> :four, 5 => :five, 6=> :six, 7=> :seven, 8 => :eight, 9=> :nine } 
input = :three 

numbers.key input # returns 3 

如果你想搜索的用戶輸入,以替換第二行:

input = gets.chomp.to_sym