İngilizce Kaynaklar


Diğer




Dizgi Katmaları [mixin]

Şablon katmalarına hem isim olarak hem de işlev olarak benziyor olsalar da, dizgi katmaları farklı olanaklardır.

Dizgi katmaları, derleme zamanı dizgilerinin D kodu olarak derlenmelerini ve programa dahil edilmelerini sağlayan olanaktır. D'de dizgi işlemlerine derleme zamanında da izin verildiği için, bu iki olanak birleştirilince özel bir alana yönelik [domain-specific] diller oluşturulabilmektedir.

Örneğin belirtilen isim ve üyelerle yapı oluşturan bir şablon şöyle tanımlanabilir:

template YapıOluştur(char[] Yapı, char[] Üyeler)
{
    const char[] YapıOluştur =
                  "struct " ~ Yapı ~ "{ int " ~ Üyeler ~ "; }";
}

mixin(YapıOluştur!("Koordinat", "x, y"));

Bu mixin'in ürettiği kod şöyledir:

struct Koordinat { int x, y; }

ve programda sıradan bir D kodu gibi kullanılabilir:

void main()
{
    Koordinat k;
    k.x = 42;
    k.y = 7;

    writefln("%d,%d", k.x, k.y);
}

Yaptığı iş metin dönüştürmek ve o metni kod olarak derletmek olduğu için dizgi katmaları C önişlemcisi olanaklarına benzerler. Ama aralarında önemli farklar vardır: