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

制御フロー

条件分岐、ループ、match 式。

制御フロー

Sounio には if, while, for, match といった馴染みのある制御フローがあります。

if / else

if は式なので、結果をバインドできます:

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

範囲(range):

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
    }
}

配列と 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)
    }
}

breakcontinue:

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)
}

仕様メモ: match ガード、範囲パターン、より豊かな enum パターンは言語の方向性に含まれます。移植性のある例を書くときは、できるだけ単純な match を使ってください。

次へ