2013-03-08 3 views
0

Я пытаюсь получить ключ по значению, но хочу, чтобы запрос динамического запроса вызывал строковую переменную.Как передать строку var в Hash # rassoc?

presidents = { 1 => "Washington", 2 => "Adams", 3 => "Jefferson" } 

request1 = gets 
request2 = "Adams" 

puts presidents.rassoc(request1).first # doesn't work 
puts presidents.rassoc(request2).first # work perfect 

Второй метод дает ошибку, когда я типа "Адамс" и нажмите Enter:

test.rb:6:in `<main>': undefined method `first' for nil:NilClass (NoMethodError) 

Я также проверил request1 и request2 классы - как String

Я прочитал описание rassoc, но до сих пор не понимаю, почему второй не работает.

ответ

1

Вы пропускаете глотайте gets:

# If the user types 'Washington' 
gets  #=> "Washington\n" 
gets.chomp #=> "Washington" 
+0

Понял - символ новой строки. Теперь это работает. Спасибо! –

+0

@ramilmuratov Всегда проверяйте свои данные, чтобы увидеть, правильно ли сделаны предположения: –

+0

@DaveNewton Спасибо, но некоторые данные неявны, особенно для новичка :) –