是否可以在循环中以多个条件执行不同条件而不创建整个新的while循环?

时间:2015-07-19 15:41:25

标签: ruby

我真的不知道怎么说这么短,让我谷歌吧。

但是可以在多个条件while循环中执行某种条件,而不会创建整个while循环。


例如,是否可以做这样的事情

while num == "" || num == "0"
   #ENTER CODE


而不是这样做

while num == ""
   print "YOU MUST ENTER A NUMBER!"
   num = gets.chomp
end

while num == "0"
   print "ZERO IS NOT A VALID NUMBER!"
   num = gets.chomp
end

我想知道是否可以这样做,但让它看起来更具视觉吸引力和简洁。

2 个答案:

答案 0 :(得分:1)

这应该是技巧,一个循环并使用条件,要打印错误信息。

while num == "" || num == "0"
  print "YOU MUST ENTER A NUMBER!" if num == ""
  print "ZERO IS NOT A VALID NUMBER!" if num == "0"
  num = gets.chomp
end

答案 1 :(得分:1)

你可以这样写:

while num.to_i.zero?
  case number
  when ''
    print 'YOU MUST ENTER A NUMBER!'
  when '0' 
    print 'ZERO IS NOT A VALID NUMBER!'
  end

  num = gets.chomp
end

这很有效,因为to_i会为字符串0"0"返回nil

此外,我建议更改错误消息以进一步简化代码:

while num.to_i.zero?
  print 'Please enter a number greater then zero'
  num = gets.chomp
end