English

高度な機能

パターンマッチ

match は、alge 型の値を分岐処理し、パラメータを取り出すのに使用します。 (alge 型については 値と型 を参照してください)

alge Shape {
    Rect( real, real ),
    Circle( real ),
}
fn area( s:Shape ): real {
    match s {
        case .Rect( w, h ) { return w * h; }
        case .Circle( r ) { return r * r * 3.14; }
    }
}

非同期処理

Go 言語へのトランスコンパイル時に利用可能な非同期処理機能です。

class Task extend (__Runner) {
    pub fn run() __async mut {
        print( "Async Task" );
    }
}
let mut t = new Task();
__run( t, __lns.runMode.Sync, "task" );
__join( t );
__async 関数からは、mutable な外部変数や __noasync 関数へのアクセスが制限されます。 この制限を一時的に解除するには __asyncLock ブロックを使用します。

Glue コード

Lua の C API と連携するための Glue コードを自動生成する機能です。

module External require "test.ext" glue 'prefix_' {
    pub static fn func(): int;
}

これにより、C言語側の prefix_func 関数を呼び出すためのブリッジコードが生成されます。