2013-12-14 2 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 

동일하지만이 드 오류 값 인쇄 :

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

이것은 기능 상 올바로입니다. 그러나, |에 의존하는 대신 해쉬 # 페치를 사용할 수 있습니다. 및 nil의 거짓. 'numbers.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 
관련 문제