Ruby 在将多个用户输入保存为变量之前,检查它们是否满足特定条件
有没有办法将这两块代码组合起来,以减少冗余Ruby 在将多个用户输入保存为变量之前,检查它们是否满足特定条件,ruby,variables,conditional-statements,user-input,rescue,Ruby,Variables,Conditional Statements,User Input,Rescue,有没有办法将这两块代码组合起来,以减少冗余 puts "first number?" num1 = gets.chomp.to_i until num1.is_a?(Integer) puts "please enter an actual number" num1 = Integer(gets.chomp) rescue nil end puts "second number?" num2 = gets.chomp.to_i
puts "first number?"
num1 = gets.chomp.to_i
until num1.is_a?(Integer)
puts "please enter an actual number"
num1 = Integer(gets.chomp) rescue nil
end
puts "second number?"
num2 = gets.chomp.to_i
until num2.is_a?(Integer)
puts "please enter an actual number"
num2 = Integer(gets.chomp) rescue nil
end
你可以这样做
def get_int(msg)
puts msg
loop do
n = Integer(gets, exception: false)
break n if n
puts "please enter an actual number"
end
end
first number?
cat
please enter an actual number
72.1
please enter an actual number
16
second number?
&dog
please enter an actual number
10/2
please enter an actual number
-4
获取num1
值的对话框如下所示
def get_int(msg)
puts msg
loop do
n = Integer(gets, exception: false)
break n if n
puts "please enter an actual number"
end
end
first number?
cat
please enter an actual number
72.1
please enter an actual number
16
second number?
&dog
please enter an actual number
10/2
please enter an actual number
-4
获取num2
值的对话框如下所示
def get_int(msg)
puts msg
loop do
n = Integer(gets, exception: false)
break n if n
puts "please enter an actual number"
end
end
first number?
cat
please enter an actual number
72.1
please enter an actual number
16
second number?
&dog
please enter an actual number
10/2
please enter an actual number
-4
见和<在Ruby v2.6中,code>Kernel#Integer被赋予了可选参数exception:false
使用
循环
的一个优点是它提供了一定程度的数据封装。与while
和until
不同,loop
获取一个块,从而避免窥视块内定义的局部变量的值。除了循环
之外,我很少使用任何东西来进行循环
def get_int(msg)
puts msg
loop do
n = Integer(gets, exception: false)
break n if n
puts "please enter an actual number"
end
end
first number?
cat
please enter an actual number
72.1
please enter an actual number
16
second number?
&dog
please enter an actual number
10/2
please enter an actual number
-4
获取num1
值的对话框如下所示
def get_int(msg)
puts msg
loop do
n = Integer(gets, exception: false)
break n if n
puts "please enter an actual number"
end
end
first number?
cat
please enter an actual number
72.1
please enter an actual number
16
second number?
&dog
please enter an actual number
10/2
please enter an actual number
-4
获取num2
值的对话框如下所示
def get_int(msg)
puts msg
loop do
n = Integer(gets, exception: false)
break n if n
puts "please enter an actual number"
end
end
first number?
cat
please enter an actual number
72.1
please enter an actual number
16
second number?
&dog
please enter an actual number
10/2
please enter an actual number
-4
见和<在Ruby v2.6中,code>Kernel#Integer被赋予了可选参数exception:false
使用循环
的一个优点是它提供了一定程度的数据封装。与while
和until
不同,loop
获取一个块,从而避免窥视块内定义的局部变量的值。除了循环
之外,我很少使用任何东西进行循环