Control Flow
Control Structures in Helix
Control flow in Helix combines familiar constructs with expressive syntax and modern additions like pattern matching.
Helix currently supports:
if-elsewhileloopsforloopsmatchexpressions (pattern matching similar to switch)breakandcontinuereturn
If / Else
The if expression allows conditional execution of code blocks.
A simple if statement looks like this:
if x > 0 { print(x);}if blocks can be stacked in order to make a decision tree, using the else keyword like this:
var score = 85;
if score > 90 { print("Excellent");} else if (score > 75) { //as noted earlier, condition brackets are optional print("Good");} else { print("Keep trying");}While
The while expression can be used to loop through statements while a given condition(s) returns true.
A simple while loop looks like this:
var x = 0;
while x < 3{ print(x); x++;}For
for loops essentially let you iterate over a range
A simple helix for loop looks like this:
for var i:i32 = 0; i < 100; i++{ print(i);}Additionally, even here, you could use traditional condition brackets, like:
for (var i:i32 = 0; i < 100; i++){ print(i);}Multiple initializations or increments can be done at once using a comma , (multiple conditions are achieved by using logical operators like && or ||) :
for (var i: i32 = 0, var j: i32 = 3; i < 100; i++, j--){ print(i)}If you are looping over any array, string, map, or any compatible list-like structure, helix has a range clause:
for letter in word{ print(word[letter]);}Match
Due to match having a lot of extra features on it, we made a completely separate page for it. To learn more, refer to the Match Guide
Break/continue
break and continue in helix serve the same purpose they do in other languages.
break is used to exit a loop
var count = 0;
for letter in sentence{ if letter == ' ' { break; //breaks the loop after the first word in the sentence is iterated over } count++;}
print(count); //prints the length of the first wordcontinue skips the current iteration and moves to the next one.
var count = 0;
for letter in sentence { if letter == ' ' { continue; //skips spaces and continues with the next character } count++;}
print(count); //prints the length of the sentence excluding whitespacesReturn
return is used to exit a function and pass a value back to the caller of the function
fn square(x:i32) ->i32{ return x * x;}
var result = square(5);print(result);