Bilmeyenler için: kabaca, şablonlardan yararlanan derleme zamanı işlemlerine "meta programlama" deniyor.
Meşhur faktöriyelin derleme zamanında şablonlarla hesaplanması:
import std.stdio;
// Genel tanımı: n! = n * (n - 1)!
ulong faktöriyel(ulong değer)()
{
return değer * faktöriyel!(değer - 1UL)();
}
// Özyinelemeyi kırmak için 0 için özellemesi
ulong faktöriyel(ulong değer : 0)()
{
return 1;
}
void main()
{
writefln("ulong.max: % 22s", ulong.max);
writefln(" % 22s", faktöriyel!20());
}
Pek de iyi gözle bakılmayan özyinelemeyi kullanıyor ama idare edin... :D Zaten çok büyük sayılar kullanamıyoruz, çünkü ulong türü en fazla 20!'nin sonucunu tutabiliyor; 21! taşıyor ve ondan sonrasının değerleri yanlış oluyor.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]