JavaFX のクロージャ

JavaFXクロージャ (closure) の例。
レキシカルスコープに記憶された変数を、呼び出しのタイミングに関係なく使用できる。

function f(p: Integer): function(): Integer {
    var localvar = p;
    function(): Integer {
        ++localvar;
    }
}

var g = f(17);
var h = f(32);

println("g() => {g()}");
println("h() => {h()}");
println("g() => {g()}");
println("h() => {h()}");

The output is:

g() => 18
h() => 33
g() => 19
h() => 34

Local Variable Extent in JavaFX | Synchronous Messages


Java よりも JavaFX の方が先を越したね。
Java の closure の行方はどうなるのだろう。