高度な機能
パターンマッチ
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 関数を呼び出すためのブリッジコードが生成されます。