Localized V2 rewrite for this language is in progress. Showing English-first content for now.

Fluxo de Controle

Condicionais, loops e expressões match.

Fluxo de Controle

Sounio oferece construções familiares de fluxo de controle: if, while, for e match.

if / else

if é uma expressão, então você pode atribuir seu resultado:

let max = if a > b { a } else { b }

while

fn main() with IO {
    var count = 0
    while count < 3 {
        println(count)
        count = count + 1
    }
}

for-in

Intervalos:

fn main() with IO {
    // Exclusive range: 0..5
    var sum = 0
    for i in 0..5 {
        sum = sum + i
    }

    // Inclusive range: 0..=5
    var sum_inclusive = 0
    for i in 0..=5 {
        sum_inclusive = sum_inclusive + i
    }
}

Arrays e Vec<T>:

fn main() with IO {
    let arr = [10, 20, 30]
    for x in arr {
        println(x)
    }

    let vec: Vec<i32> = [1, 2, 3, 4]
    for x in vec {
        println(x)
    }
}

break e continue:

fn main() with IO {
    for i in 0..10 {
        if i % 2 == 0 {
            continue
        }
        if i >= 7 {
            break
        }
        println(i)
    }
}

match

fn main() with IO {
    let x = 1
    let y = match x {
        0 => 10
        1 => 20
        _ => 30
    }

    println(y)
}

Nota da spec: guards, padrões de range e padrões mais ricos de enum fazem parte da direção da linguagem. Prefira o formato mais simples de match quando escrever exemplos portáteis.

O que vem a seguir?