Ruby是一种非常灵活的语言。它为您提供了许多使代码更有效和更清晰的方法。借助重做和重试语句,可以使您的代码对用户更具可读性,并且可以更有效地执行功能。让我们仔细阅读每个语句的语法,实现区域和示例。
当您必须在同一循环中重新执行迭代时,重做语句就会出现。它在循环中重复当前的迭代。重做语句的功能是它执行时甚至不评估循环条件。有时,这会导致创建无限循环。让我们看一下语法和示例。
语法:
while (#condition) #statements redo if #condition end
范例1:
=begin Ruby program to demonstrate redo =end i = 30 while(i < 50) puts "Value of i is #{i}" i += 1 redo if i == 50 end
输出结果
Value of i is 30 Value of i is 31 Value of i is 32 Value of i is 33 Value of i is 34 Value of i is 35 Value of i is 36 Value of i is 37 Value of i is 38 Value of i is 39 Value of i is 40 Value of i is 41 Value of i is 42 Value of i is 43 Value of i is 44 Value of i is 45 Value of i is 46 Value of i is 47 Value of i is 48 Value of i is 49 Value of i is 50
说明:
在上面的代码中,您可以看到while循环中指定的条件告诉迭代最多可以完成49次,但是由于引入了redo语句,因此迭代最多可以进行50次,因为redo语句在检查条件之前执行。
范例2:
=begin Ruby program to demonstrate redo =end i = 30 while(i < 50) puts "Value of i is #{i}" i += 1 redo if i > 45 end
输出结果
An infinite loop
说明:
上面的代码将给出一个无限循环,因为我将始终大于45。
在Ruby中,retry语句仅在begin / rescue块内起作用。您也可以说它在异常处理的上下文中起作用。要重新执行该块时,应使用retry语句。
语法:
retry
示例
=begin Ruby program to demonstrate retry =end for i in 0..10 begin puts "VALUE OF i #{i}" raise if i >=9 rescue retry end end
输出结果
Infinite loop.
说明:
这也将产生无限循环,因为将引发异常,直到i> = 9,这是无限情况。