Synopsis: continue;
The continue statement is used within loops to abandon the current loop cycle immediately. In contrast to break it doesnt exit the loop but jumps to the conditional clause that controls the loop. So for a while() loop, it jumps to the beginning of the loop and checks the condition. For a do...while() loop or repeat...until() loop, it jumps to the end of the loop end checks the condition.
Example 8.13. continue statement in while
{ integer a = 0; while (a < 10) { a = a + 1; if (a % 2 == 1) continue; // % is the modulo operator. y2milestone("This is an even number: %1", a); } }
Example 8.14. continue statement in foreach
{ // lists all files in /tmp directory map cmd = (map) SCR::Execute(.target.bash_output, "ls -1a /tmp"); list <string> files = splitstring ( (string) cmd["stdout"]:"", "\n" ); // clearing memory cmd = nil; foreach (string filename, files, { if (regexpmatch(filename, "x")) { y2warning("Filename '%1' contains 'x'", filename); } if (size(filename) > 20) { y2error("Filename '%1' is longer than 20 chars", filename); // we don't work with files with longer names continue; } if (regexpmatch(filename, "^\.")) { y2milestone("Filename '%1' starts with a dot", filename); } else { y2milestone("Filename '%1' is what we are looking for", filename); } }); }
Example 8.15. continue statement in listmap
{ list <integer> random_integers = []; // filling up with random numbers while (size(random_integers) < 10) { random_integers = add (random_integers, random(32768)); } random_integers = toset(random_integers); map <integer, integer> new_map = listmap (integer number, random_integers, { // do not proccess huge numbers // actually, this finished the listmap and returns nil if (number > 32000) { y2error("A huge number has been found"); continue; } if (number % 3 == 0) { return $[number : number / 3]; } else { return $[number : number * 3]; } }); y2milestone("New map: %1", new_map); }
![]() | Note |
---|---|
The usage is similar to the break's one. |