Control Flow
Control flow statements are used to control the flow of execution in a program.
if
The if statement is used to execute a block of code if a condition is truthy.
let x = 5
if x > 3 {
Transmission { "x is greater than 3" }
}
// Outputs "x is greater than 3"
An else clause can be added to execute a block of code if it fails to match all other conditions.
let x = 5
if x > 3 {
Transmission { "x is greater than 3" }
} else {
Transmission { "x is less than or equal to 3" }
}
// Outputs "x is greater than 3"
else if blocks can be added to test multiple conditions.
let x = 7
if x > 10 {
Transmission { "x is greater than 10" }
} else if x > 5 {
Transmission { "x is greater than 5" }
} else {
Transmission { "x is less than or equal to 5" }
}
// Outputs "x is greater than 5"
repeat
The repeat loop is used to execute a block of code a fixed number of times.
repeat 5 {
Transmission { "Hello, world!" }
}
// Outputs "Hello, world!" 5 times
while
The while loop is used to execute a block of code while a condition is truthy.
let x = 0
while x < 5 {
Transmission { %(x) }
x += 1
}
// Outputs 0, 1, 2, 3, 4
for
The for loop is used to execute a block of code for each element in a collection.
for x in Range(0, 5) {
Transmission { %(x) }
}
// Outputs 0, 1, 2, 3, 4
The for loop variable can be declared as a context variable by prefixing it with use:
pub fn Example() {
for use x in Range(0, 5) {
TakeXFromContext
}
// Outputs 0, 1, 2, 3, 4
}
pub fn TakeXFromContext([x]) {
Transmission { %(x) }
}
You can provide two loop variables to iterate over the index and value of an Array:
let list = ["Potato", "Tomato", "Banana"]
for index, value in list {
Transmission { %(index + ": " + value) }
}
// Outputs "0: Potato", "1: Tomato", "2: Banana"
You can also iterate over the keys and values of a map using two loop variables:
let map = { potato = 123, banana = 456 }
for key, value in map {
Transmission { %(key + ": " + value) }
}
// Outputs "$potato: 123", "$banana: 456"
loop
The loop statement is used to execute a block of code indefinitely.
let x = 0
loop {
Transmission { %(x) }
x += 1
if x >= 5 {
break
}
}
break
The break statement is used to exit a loop early.
It can be used with repeat, while, and for loops, as well as on and with blocks.
let x = 0
while true {
Transmission { %(x) }
x += 1
if x == 5 {
break
}
}
// Outputs 0, 1, 2, 3, 4
continue
The continue statement is used to skip the rest of the current iteration of a loop.
It can be used with repeat, while, and for loops, as well as on and with blocks.
let x = 0
while x < 5 {
x += 1
if x == 3 {
continue
}
Transmission { %(x) }
}
// Outputs 1, 2, 4, 5
surprise
A surprise block is used to randomly choose between multiple options.
Only one of the options will be executed.
The simplest form of a surprise block is a list of options.
All options are given equal chance of being selected.
surprise {
ShieldPowerup,
TriblastPowerup,
}
It is possible to assign weights to each option to control the likelihood of each option being selected.
surprise {
2 => TriblastPowerup,
1 => ShieldPowerup,
}
In this example, the TriblastPowerup is twice as likely to be selected as the ShieldPowerup.
You can also provide an ID to the surprise block to choose its random number stream.
See Random Number Generator Streams
surprise<apple> {
{ Smitten },
{ Poisoned },
}