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の使用上の注意点
- ループ変数の更新やカウンタ制御を行わないと無限ループになる。
- 条件付きで使用することで意図した再実行が可能。
forやwhileループ、eachなどほとんどの反復構造で使用可能。
4. まとめ
Rubyで現在のイテレーションをやり直したい場合、redo を使用すると便利です。適切に条件制御と組み合わせることで、特定のケースだけ同じ処理を再実行でき、柔軟なループ制御が可能になります。


コメント