2016-03-25 3 views
0

Вместо gets.chomp, есть ли что-нибудь, что я могу использовать, чтобы превратить их ответ в логическое?Как установить переменную в логическое?

puts "Do you like pizza? (yes or no)" 
pizza = gets.chomp  
if pizza == "yes" 
    pizza = true 
else 
    pizza = false 
end 

Я попытался gets.to_b и gets.bool, но это не кажется, работает.

+4

Или короче, 'pizza = gets.chomp == 'yes''. Но да, вы должны сделать вариант этого. Ruby не знает, что '' yes ''должно означать' true' –

+2

Кстати, вы знаете, что там делает 'chomp'? Или вы только что скопировали его откуда-то? –

+0

Спасибо, что сработал! Из моего понимания chomp удаляет разрыв строки, который добавляет. Я на правильном пути? –

ответ

1

Вы можете сделать что-то вроде этого:

puts "Do you like pizza? [yes/no]:" 
pizza = gets.chomp  
case pizza 
    when 'y','Y','yes' 
    pizza = true 
    when 'n', 'N','no' 
    pizza = false 
end 
puts pizza 
3

Я бы просто использовать get[0], что возвращает первый символ и позволяет принимать у или да:

puts 'Do you like pizza? (yes or no)' 
pizza = gets[0] == 'y' 

или вы может определять метод to_b на String:

class String 
    def to_b 
    # might want to add even more values to the list 
    %w(y yes true 1).include?(self.chomp.downcase) 
    end 
end 

'yes'.to_b 
#=> true 
'no'.to_b 
#=> false 
Смежные вопросы