本記事ではRubyのredoとretryについて、使用例と合わせて解説します!
redo
redo文は、今実行しているのループを再度はじめから行うために使用されます。
条件を再度評価することなく、取り出す要素は同じでループをはじめから実行されます。
redo → 同じループがはじめから実行される
next → 次のループが実行される
nextについて以下の記事で詳しく解説していますので、ぜひチェックしてみてください!
count = 0
for n in 0..10
if n == 5
if count == 0
puts "redoするのは#{n.to_s}の時"
count += 1
redo
end
end
puts n
end
# 0
# 1
# 2
# 3
# 4
# redoするのは5の時
# 5
# 6
# 7
# 8
# 9
# 10
*上記の例では、nが5の時にredoによって再度 if n == 5からループを実行しています。
retry
retryは、rescue 節で begin 式をはじめからもう一度実行するために使用します。
ループの内側で使われ、処理が成立するまで繰り返しを続けます。
5.times do |n|
begin
puts n
raise if n > 3
rescue
retry
end
end
# 0
# 1
# 2
# 3
# 4
# 4
# 4
# 4
# 4
# 4
# ...