2016-03-25 15 views
0

Kann ich anstelle von gets.chomp irgendetwas verwenden, um ihre Antwort in einen booleschen Wert zu verwandeln?Wie würde ich eine Variable auf einen booleschen Wert setzen?

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

Ich versuchte gets.to_b und gets.bool, aber es scheint nicht zu funktionieren.

+4

Oder kürzer, 'pizza = gets.chomp == 'yes''. Aber ja, du musst eine Variante davon machen. Ruby hat keine Ahnung, dass "Ja" '' '' ' –

+2

BTW bedeutet, weißt du, was' chomp' da macht? Oder du hast es einfach irgendwo kopiert? –

+0

Danke das hat funktioniert! Aus meiner Sicht entfernt chomp einen Zeilenumbruch, der addiert wird. Bin ich auf dem richtigen Weg? –

Antwort

1

Sie können etwas tun:

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

Ich würde nur get[0] verwenden, was das erste Zeichen zurückgibt und ermöglicht es Ihnen, y oder ja zu akzeptieren:

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

Oder Sie kann eine to_b Methode auf String selbst definieren:

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 
Verwandte Themen