Conditionals and Loops

If Statements

An if statement in Oasis is pretty traditional.

if condition
    //do something
end

if condition
    //do something
else
    //do something else
end

if condition
    //do something
else if condition
    //do something else
else
    //do something else
end

These can also be inlined.

// You might do this:
let a = nil
if 1 == 1
    a = 25
else
    a = 42
end

// However, this is more readable:
let a = if 1 == 1 => 25 else 42

‘Is’ Statements

An is statement is similar to a switch statement in other languages.

let x = 3
is x
    1 =>
        io:print("x is 1")
    end
    2 =>
        io:print("x is 2")
    end
    3 =>
        io:print("x is 3")
    end
end

// prints "x is 3"

While Loops

While loops are also pretty simple.

let i = 0
while i < 10
    io:print(i)
    i = i + 1
end

// prints 0 1 2 3 4 5 6 7 8 9

You can use break and continue to control the loop.

let i = 0
while i < 10
    if i == 5
        break
    end
    io:print(i)
    i = i + 1
end

// prints 0 1 2 3 4

For Loops

The for loop has two forms.

for i in range(0, 10)
    io:print(i)
end

// prints 0 1 2 3 4 5 6 7 8 9

for let i = 0 | i < 10 | i = i + 1
    io:print(i)
end

// prints 0 1 2 3 4 5 6 7 8 9

In the first form, the loop iterates over a prototype that implements __iterator. The second form is a more traditional for loop.