Carbon provides loops using the while
and for
statements. Within a loop, the break
and continue
statements can be used for flow control.
while
statements loop for as long as the passed expression returns True
. Syntax is:
while (
boolean expression) {
statements}
For example, this prints 0
, 1
, 2
, then Done!
:
var x: Int=0; while (x <3) { Print(x); ++x; } Print("Done!");
for
statements support range-based looping, typically over containers. Syntax is:
for (
var declarationin
expression) {
statements}
For example, this prints all names in names
:
for (var name: String in names) { Print(name); }
PrintNames()
prints each String
in the names
List
in iteration order.
TODO: Add semantics discussion from #1885: ranged-based for
for user-defined types.
The break
statement immediately ends a while
or for
loop. Execution will resume at the end of the loop's scope. Syntax is:
break;
For example, this processes steps until a manual step is hit (if no manual step is hit, all steps are processed):
for (var step: Step in steps) { if (step.IsManual()) { Print("Reached manual step!"); break; } step.Process(); }
The continue
statement immediately goes to the next loop of a while
or for
. In a while
, execution continues with the while
expression. Syntax is:
continue;
For example, this prints all non-empty lines of a file, using continue
to skip empty lines:
var f: File=OpenFile(path); while (!f.EOF()) { var line: String= f.ReadLine(); if (line.IsEmpty()) { continue; } Print(line); }
- Proposal #340:
while
- Proposal #353:
for
- Proposal #618:
var
ordering - Proposal #623: Require braces