2016-03-25 14 views
0

gets.chomp yerine, yanıtlarını bir boole dönüştürmek için kullanabileceğim bir şey var mı? Boole'ye nasıl bir değişken ayarlayabilirim?

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

Ben gets.to_b ve gets.bool çalıştı, ama çalışıyor gibi görünüyor değildir.

+4

Veya daha kısa, 'pizza = gets.chomp == 'yes''. Ama evet, bunun bir varyantı yapmak zorundasın. Ruby'nin "evet" in 'true' –

+2

BTW anlamına gelmesi gerektiği konusunda hiçbir fikri yok, orada ne yaptıklarını biliyor musun? Yoksa sadece bir yerden kopyaladın mı? –

+0

Bu işe yaradı! Anlayışımdan chomp ekleyen bir satır aralığını kaldırır. Doğru yolda mıyım? –

cevap

1

Böyle bir şey yapabilirsiniz:

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

Sadece ilk karakteri döner ve izin verdiklerini get[0] kullanacağı kabul etmek y veya evet:

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

Yoksa String üzerinde bir to_b yöntemini tanımlayabilirsiniz:

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 
İlgili konular