====== Fun ====== 関数です。 fun(){}式によって生成されます。 いわゆるクロージャになっているので、関数生成時の変数環境が保存されます。意味的にこの文に含まれていますが、thisは関数生成時のものが使われます(Methodとの比較のために明示しました)。 ===== Example ===== // 次のようなシンタックスシュガーが用意されている fun func(x){ return x + x; } func2 : fun(x, y){ return x + y; } func(10).p; func2(10, 3).p; クロージャとなっていることを示す例1。 class Foo{ returnFun(x){ return fun(){ this.print(x); } } print(x){ x.p; } } foo : Foo(); f : foo.returnFun(100); f(); このように、変数環境が保持され、thisとxを渡していないのにf()を呼び出したときに使用することができています。 クロージャとなっていることを示す例2。WikipediaのコードのXtal移植です。 fun newCounter(){ i : 0; return fun(){ i = i + 1; return i; } } c1 : newCounter(); c1().p; c1().p; c1().p;