2.0 KiB
Control statements
Control statements are used to control program flow. Using logical expressions, different branches of code will be run.
if statements
The syntax for if statements in cosmo looks like:
if 1 == 1 then
// true branch here
print("true")
else
// false branch here
print("false")
end
true
the elseif
keyword can also be used to have an else conditional branch:
if false then
print("bye")
elseif true then
print("hi")
end
hi
while loops
While loops are basic "repeat while X is true" loops. Their syntax consists of the while
keyword, followed by the logical expression and the do
keyword. The loop body is ended by the matching end
keyword. In practice this looks like:
while true do
print("oh no! infinite loop!")
end
oh no! infinite loop!oh no! infinite loop!oh no! infinite loop!...
for loops
There are two main types of for loops, the traditional c-style for loops, and the for-each loop which requires an iterator object (see objects.md
)
The c-style for loops starts with the for
keyword, followed by '(' and an initializer, a conditional expression, and an iterator statement each separated by a ';', followed by ')' then the do
keyword. The loop body is ended by the matching end
keyword. Like so:
var total = 0
for (var i = 0; i < 10; i++) do
total = total + i
end
print(total)
45
The for-each loops are a little different, the absence of the starting '(' marks it as a for-each loop. After the for
keyword, the values expected during iteration are expected, each separated by a ','. After that, the in
keyword is expected and the iterator object is expected. The loop body is ended by the matching end
keyword. The start of the loop body is marked by the do
keyword. Like so:
for key, val in ["hello", "world"] do
print("[" .. key .. "] = " .. val)
end
[0] = hello [1] = world
Tables have a built-in iterator in the VM and are accepted in for-each loops. However, iterations over tables are not guaranteed to be in any specific order.