Если вам нужно отфильтровать также отрицательные целые числа , вы можете проверить, содержит ли вход только цифры.Например:
age = nil
loop do
puts "Enter your age: "
age = gets.chomp
break if (age.scan(/\D/).empty? & !age.empty?)
end
puts "Your age is #{age}"
age = nil
требуется для инициализации переменной и использования вне цикла.Или нужно использовать @age
.
.scan(/\D/)
генерирует массив, содержащий каждый отдельный символ строки, который не является цифрой \D
.Таким образом, если массив пуст, это означает, что строка состоит только из цифр.Например:
p "my age is 30".scan(/\D/) #=> ["m", "y", " ", "a", "g", "e", " ", "i", "s", " "]
p "30".scan(/\D/) #=> []