【Ruby】ループ処理におけるredoとretryについて詳しく解説します

Ruby

本記事では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
# ...
タイトルとURLをコピーしました