カテゴリー
Ruby

redoについて知ろう

この章ではredoについて説明します。
redoはnextの機能と似ていますが、少し注意が必要です。
redoについての詳しい説明は次の例の後にします。
では例をみてみましょう。99 nextは条件にマッチしたら、先頭に戻ってループを続け、その周回の要素は出力されませんでした(「nextについて知ろう」の例では5だけが抜けていました)。
redoも条件にマッチしたら先頭に戻るのですが、同じ繰り返しをもう一度行います。
同じ繰り返しを行うので、5の要素も改めて出力されることになります。
しかし,カウントの値aはその間もカウントされていますので、配列の5の要素を出力するにしても、カウントaは6になっていますので、出力は「カウント6は5」になります。
結果は以下の通りです。9

カテゴリー
Perl

redo演算子を知ろう

この章ではredo演算子について説明します。
redo演算子は繰り返しの途中で発動したのならば条件式の判定を行わず、現在のループをやり直します。
while文、until文、for文、foreach文で使うことができます。
では例をみてみましょう。1 redoが実行されると1というコメントがあるところまで戻ります。
この時1の条件判断を行いません。
この例では234までは普通に出力していますが、$numが5になったのならばredoが発動して、1の位置まで戻るので、1で 5を出力することはありません。
「#redoにより、ここに戻ります」の位置まで戻ったら、1で1が足されて6になりますが、1の条件式の判定がFALSEなのでif文はスルーして1で 6を出力します。
そして、また最初に戻って1で条件判断をして6は10以内なのでまたループが始まると言う流れになります。
結果は「234678910」です。
1もう一つredoの例を見てみましょう。
1この例では$iが3になったら、1まで戻って、1を実行します。
次のif文は$iに10が入っているのでスルーして、最後に11を実行して終わりになります。1