Skip to content

関数

定義

Thirdではスクリプトの中で関数を定義できます。

third
fn add(a, b) {
    a + b
}
fn add(a, b) {
    a + b
}

ブロックの中で最後に評価されたが返り値となります。ブロックの途中で処理を中断したい場合、returnを用います。

third
fn is_one(n) {
    if n == 1 {
        "Yes"
    } else {
        "No"
    }
}
assert is_one(1) == "Yes";

fn div_2(n) {
    loop {
        if n % 2 == 0 {
            n /= 2;
        } else {
            return n;
        }
    }
}
assert div_2(12) == 3;
fn is_one(n) {
    if n == 1 {
        "Yes"
    } else {
        "No"
    }
}
assert is_one(1) == "Yes";

fn div_2(n) {
    loop {
        if n % 2 == 0 {
            n /= 2;
        } else {
            return n;
        }
    }
}
assert div_2(12) == 3;

再帰的な関数を定義することもできなす。

third
fn fib(n) {
    if n <= 2 {
        1
    } else {
        fib(n - 2) + fib(n - 1)
    }
}
assert fib(9) == 34;
fn fib(n) {
    if n <= 2 {
        1
    } else {
        fib(n - 2) + fib(n - 1)
    }
}
assert fib(9) == 34;

呼び出し

組み込み関数、スクリプト関数ともに同様の方法で呼び出しが可能です。

third
func_without_args();
func_with_args(1, 2);
func_without_args();
func_with_args(1, 2);