Pages: 1 2 3 4 5 6

Clumpy Usage Guide

Break and Continue

Suppose we wanted to skip all the numbers that are divisible by ten, or if the number meets some special condition, exit the loop.

var i;

// Real Loop:
for (i = 0; i < 100000; i++) {
    if (i % 10 === 0) {
        continue;
    }
    if (isSpecial(i)) {
        break;
    }
    // statements
}

// Clumpy Equivalent:
clumpy.for_loop(
    function () { i = 0; },
    function () { return i < 100000; },
    function () { i++; },
    function () {
        if (i % 10 === 0) {
            clumpy.continue_loop();
            return;
        }
        if (isSpecial(i)) {
            clumpy.break_loop();
            return;
        }
        // statements
    }
);

This is where there’s the greatest likelihood of error. Notice the return; after the clumpy.continue_loop(); statement. This is because if we don’t explicitly leave the function, JavaScript will continue to execute the rest of it.

I’ve found that a good pattern to follow is to put the return before the method invocation in the same statement (returning the result) instead of after it in a separate statement:

var i;

return clumpy.
for_loop(
    function () { i = 0; },
    function () { return i < 100000; },
    function () { i++; },
    function () {
        if (i % 10 === 0) {
            return clumpy.
            continue_loop();
        }
        if (isSpecial(i)) {
            return clumpy.
            break_loop();
        }
        // statements
    }
).
once(function () {
    // etc.
});

Next Page: Labels

© Thomas Peri