如果用户将答案留空,如何将变量设置为nil?

时间:2016-03-24 09:27:23

标签: ruby-on-rails ruby

我学习红宝石而且有点卡住了。如果用户将问题留空,他们希望我们将变量设置为nil。否则将他们的答案转换为整数。我想出了以下内容,但是当我把答案留空时,它会打印出0.你能指引我朝正确的方向前进吗?

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

3 个答案:

答案 0 :(得分:0)

您有一个额外的空间 - if number == ' ' - 这应该是if number == ''

另一种方法是说if number.length == 0

答案 1 :(得分:0)

你可以这样做

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

或单行你可以这样做

number = number.empty? ? nil : number.to_i

答案 2 :(得分:0)

您只测试输入的数字是否明确为单个空格。如果你正在测试空白'您可能想要strip收到的输入,然后测试它是empty?

E.g。

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

您已使用对此进行了标记,因此如果blank?返回true(即字符串为空或仅包含空格),我假设您正在考虑将字符串设为空白如果您正在使用rails,那么您可以使用blank?方法来测试输入:

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