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;
reference/fun.txt · 最終更新: 2011/06/28 14:07 by sukai
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0