2016-03-24 13 views
0

Ruby'i öğreniyorum ve biraz takılıyorum. Kullanıcı soruyu boş bırakırsa, bir değişkeni sıfır olarak ayarlamamızı isterler. Aksi halde cevaplarını bir tam sayıya dönüştürün. Aşağıdakileri buldum, ama cevabı boş bıraktığımda, 0'ı basıyor. Beni doğru yöne yönlendirebilir misin? if number == ' ' - -Kullanıcı cevabını boş bırakıyorsa, nil değişken nasıl ayarlanır?

puts "What's your favorite number?" 
number = gets.chomp 
if number == ' ' 
    number = nil 
else 
    number = number.to_i 
end 
p number 

cevap

0

Sadece girilen numara açıkça tek bir boşluk olup olmadığını test ediyorsunuz. 'Boşluk' için test ediyorsanız, muhtemelen aldığınız girdiyi strip istediğiniz ve empty? ise test edin.

E.g.

number = gets.strip 
if number.empty? 
    number = nil 
else 
    number = number.to_i 
end 

Sen o yüzden blank? döner doğru (yani dize boş veya yalnızca boşluk oluşması durumunda boş bir dize düşünen farz ediyorum bu etiketlediniz. Sonra sizi raylar kullanıyorsanız girişi sınamak için blank? yöntemini kullanabilir:

number = gets 
if number.blank? 
    number = nil 
else 
    number = number.to_i 
end 
0

Sen fazladan bir boşluk var bu if number == ''

alternatif bir yolu if number.length == 0

0

sizin gibi yapabilirsiniz söylemek olurdu olmalıdır bu

if number.empty? 
    number = nil 
else 
    number = number.to_I 
end 

veya Tek satırda bunu yapabilirsiniz

number = number.empty? ? nil : number.to_i 
İlgili konular