動的クロージャ
よくわからない挙動を…うーん。
import std.c.stdio; int delegate() dg; void f(int x){ int foo() { return x; } dg = &foo; } void curry(int y){ int x = dg(); printf("x + y = %d\n", x + y); } void main(){ f(1); curry(2); }
出力
x + y = 4
おいまてそれはねえ、という感じである。
ためしにxとyが幾つになってるか調べて見ると…?
import std.c.stdio; int delegate() dg; void f(int x){ int foo() { return x; } dg = &foo; } void curry(int y){ int x = dg(); printf("x = %d\n", x); // 追加 printf("y = %d\n", y); // 追加 printf("x + y = %d\n", x + y); } void main(){ f(1); curry(2); }
結果。
x = 1 y = 2 x + y = 3
おいま(略)、という感じである。
ボクがdelegateの使い方を致命的なレベルで間違っているんだろうか。でも何処がおかしいのかよくわからない。