Biliyorum...:)
Sınıflar arasında miras alma olayı olduğundan böyle bir şey gereksiz görülebilir. Bir yerde ihtiyaç duyduğum için sormak istiyorum; doğru mu yaptım?
Aşağıdaki kodda amacım kısaca şu: Kurulmuş olan sınıfın, istenildiği zaman kullanılan üyesinin (işlev) adresini temsilci (delegate) yoluyla başka bir sınıfa bildirmek. Sonuçta bu sınıf üzerinde dolaylı bir erişim söz konusu oluyor; gülmeyin...:D
import std.stdio;
class Foo
{
int result;
int delegate(int) func;
this(int delegate (int) k)
{
this.func = k;
}
void exec(int x)
{
for(int i = 0; i < x; i++)
{
result = func(i);
}
}
}
class Bar
{
alias recursive_func a;
int recursive_func(int l) {
return l ? l + a(l - 1) : 0;
}
}
void main()
{
auto bar = new Bar();
foreach(n; 1..10)
{
auto nesne = new Foo(&bar.a);
nesne.exec(n);
nesne.result.write("\t");
nesne.clear;
}
writeln;
}
Kod istenildiği gibi çalışıyor ama hatalarım olabilir...
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]