ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



9.3 The redo Statement

The third way you can jump around in a looping block is with redo. This construct causes a jump to the beginning of the current block (without reevaluating the control expression), like so:

while (somecondition) {
        # redo comes here
        something;
        something;
        something;
        if (somecondition) {
            somestuff;
            somestuff;
            redo;
        }
        morething;
        morething;
        morething;
}

Once again, the if block doesn't count - just the looping blocks.

With redo, last, and a naked block, you can make an infinite loop that exits out of the middle, like so:

{
        startstuff;
        startstuff;
        startstuff;
        if (somecondition) {
            last;
        }
        laterstuff;
        laterstuff;
        laterstuff;
        redo;
}

This logic would be appropriate for a while-like loop that needed to have some part of the loop executed as initialization before the first test. (In a later section entitled "Expression Modifiers," we'll show you how to write that if statement with fewer punctuation characters.)