D言語 Part25
■ このスレッドは過去ログ倉庫に格納されています
0473デフォルトの名無しさん
2010/11/02(火) 00:50:41class test
{
double delegate() a;
void b(lazy double arg)
{
a = {return arg();};
}
}
というクラス作っといて
test[] t;
double f = 1.;
for(int i=0;i<t.length;i++)
{
t[i].b(f + i);
} //この時点でi=t.lengthになる
みたいにして
のちのち
for(int i=0;i<t.length;i++) //先のiとは別物
{
t[i].a();
}
と書くと、iが遅延評価されて、
t[i].a() == 1.+t.length になってしまいます。
そこを、t[i].a() == 1. + i
という形にしたいのです(つまりfは遅延評価されるが、iはその場で値にされ代入)
■ このスレッドは過去ログ倉庫に格納されています