Rubyでループをやり直す方法:redoによる現在のイテレーションの再実行

Ruby

Rubyでは、ループ内で現在のイテレーションをやり直したい場合に redo キーワードを使用できます。redo を呼ぶと、ループの条件判定や次のイテレーションには進まず、現在のループを最初からやり直します。

1. redoの基本的な使い方

redo はループ内で呼び出すと、そのイテレーションの最初に戻り、条件式を再評価せずに処理を繰り返します。無限ループにならないように条件制御と併用することが重要です。

i = 0
while i < 5
  i += 1
  if i == 3
    puts "Redoing iteration for i=3"
    redo
  end
  puts i
end

上記コードでは、i=3 のとき redo によって同じイテレーションがやり直されます。条件制御がないと無限ループになりますので注意が必要です。

2. nextとの違い

next は現在のイテレーションをスキップして次のイテレーションに進むのに対し、redo は同じイテレーションを再実行します。

3. redoの使用上の注意点

  • ループ変数の更新やカウンタ制御を行わないと無限ループになる。
  • 条件付きで使用することで意図した再実行が可能。
  • forwhile ループ、each などほとんどの反復構造で使用可能。

4. まとめ

Rubyで現在のイテレーションをやり直したい場合、redo を使用すると便利です。適切に条件制御と組み合わせることで、特定のケースだけ同じ処理を再実行でき、柔軟なループ制御が可能になります。

コメント

タイトルとURLをコピーしました