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

Flujo de Control

Condicionales, bucles y expresiones match.

Flujo de Control

Sounio ofrece construcciones de control de flujo familiares: if, while, for y match.

if / else

if es una expresión, por lo que puedes asignar su 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

Rangos:

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 y 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 y 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 de la spec: guards, patrones de rango y patrones más ricos de enum forman parte de la dirección del lenguaje. Prefiere la forma más simple de match al escribir ejemplos portátiles.

¿Qué sigue?