Ruby redo和retry语句
在Ruby中, redo语句 用于重复循环的当前迭代。重做总是在循环内部使用。重做语句重新启动循环,而不重新评估条件。
# Ruby program of using redo statement
#!/usr/bin/ruby
restart = false
# Using for loop
for x in 2..20
if x == 15
if restart == false
# Printing values
puts "Re-doing when x = " + x.to_s
restart = true
# Using Redo Statement
redo
end
end
puts x
end
输出
2
3
4
5
6
7
8
9
10
11
12
13
14
Re-doing when x = 15
15
16
17
18
19
20
在上面的例子中,当 x = 15 时应用重做语句 。
retry 语句
为了从头开始重复整个循环的迭代,使用重试语句。重试总是在循环内部使用。
例子 #1 :
# Ruby program of retry statement
# Using do loop
10.times do |i|
begin
puts "Iteration #{i}"
raise if i > 2
rescue
# Using retry
retry
end
end
输出
Iteration 0
Iteration 1
Iteration 2
Iteration 3
Iteration 3
Iteration 3
...
例子#2
# Ruby program of retry statement
def geeks
attempt_again = true
p 'checking'
begin
# This is the point where the control flow jumps
p 'crash'
raise 'foo'
rescue Exception => e
if attempt_again
attempt_again = false
# Using retry
retry
end
end
end