- 696 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:23:14 ]
- >>686
Cとの比較で言うと、クロージャは「状態のある関数ポインタ」といえると思う Xの値が欲しい時に void Hoge(Func<int> getX){ int x = getX(); } C#ならこう書ける。getXにはintを返す関数がなんでも入れられるしその場で作れる Cで書くと struct Func_int{ int (*func)(void*); void* args; }; void Hoge(Func_int fi) { int x = fi.func(fi.args); } こんなんだけど引数の型も作らなきゃいけないし関数はvoid*をとらなきゃいけないしで大変だ オブジェクト指向で書くと class Func<int> : IFunc<int> { int x, y; public Func(int x, int y){ this.x = x; this.y = y; } public int Method(){ return x + y; } } クロージャだと Hoge(() => x + y); こうだ。 これが進化だよ。
|

|