D.ershane D Programlama Dili
Ali Çehreli

anahtar sözcük: [keyword], dilin kendisi için ayırmış olduğu ve iç olanakları için kullandığı sözcük
değişken: [variable], kavramları temsil eden veya sınıf nesnesine erişim sağlayan program yapısı
ifade: [expression], programın değer oluşturan veya yan etki üreten bir bölümü
soyut: [abstract], somut gerçekleştirmesi verilmemiş olan
yükleme: [overloading], aynı isimde birden çok işlev tanımlama
... bütün sözlük



İngilizce Kaynaklar

Diğer



Tür Nitelikleri

__traits anahtar sözcüğü ve std.traits modülü, türlerin niteliklerine yönelik olan üst düzey olanaklar sunarlar. Çoğunlukla kütüphaneler yazarken yararlı olan bu olanaklar başka derlemeli dillerde ya hiç bulunmazlar ya da C++'ta olduğu gibi kullanımları çok zordur.

__traits'in sunduğu bilgiler dilin başka olanakları tarafından edinilemeyen ve çoğunlukla derleyicinin toplamış olduğu bilgilerdir. Bu bilgiler özellikle şablon kodlarında ve koşullu derleme sırasında yararlı olabilirler.

Örneğin yalnızca aritmetik türlerle işleyebilen bir işlev şablonu, "aritmetik mi" anlanıma gelen isArithmetic'i şablon kısıtlamasında şöyle kullanabilir:

void birİşlev(T)()
    if (__traits(isArithmetic, T))
{
    // ...
}

Başka bir örnek olarak, T gibi bir şablon parametresinin aritmetik bir tür olup olmamasına göre kod farklı biçimde gerçekleştirilebilir:

    static if (__traits(isArithmetic, T)) {
        /* ... aritmetik bir türmüş ... */

    } else {
        /* ... değilmiş ... */
    }
__traits

__traits, derleyicinin koddan edinmiş olduğu bilgileri sorgulamaya yarar. Söz dizimi aşağıdaki gibidir:

    __traits(sözcük, parametreler)

sözcük, aşağıda listelenen sözcüklerden birisidir ve __traits'in hangi amaçla kullanıldığını belirler. parametreler ise bir veya daha fazla sayıda olmak üzere tür ismi veya ifadedir. Parametrelerin anlamları kullanılan sözcüğe bağlıdır.

__traits sözcükleri

Bu sözcükler sorgulanmakta olan bilgiyi belirlerler.

Aşağıdaki örneklerdeki türler zaten bariz olduklarından __traits'in yararı bu bölümde tam olarak anlaşılamıyor. Örneğin ulong'un aritmetik bir tür olup olmadığını __traits ile sorgulamaya gerek yoktur. Bu sözcükler özellikle şablon kodlarında ve çoğunlukla T olarak isimlendirdiğimiz türler hakkında bilgi edinmek için yararlıdırlar.

Ek olarak, aşağıdaki çoğu örnekte parametre olarak türler kullandığım halde aslında çoğu durumda herhangi bir ifade de kullanılabilir.

Ne zaman kullanmalı

Bu olanaklardan çoğunlukla şablon içeren kütüphanelerde yararlanılır. isArithmetic, isIntegral, hasMember ve compiles gibi basit olanların dışındakilerle günlük programlamada fazla karşılaşılmaz.

std.traits modülü

Bu modüldeki şablonlar, __traits'in ürettiği bilgilerin benzerlerini kütüphane olanakları olarak ve yine derleme zamanında üretirler.

Burada örnek olarak yalnızca karakter ve dizgi türleriyle ilgili olanlarını göstereceğim. Bu modülde çok sayıda başka olanak da bulunur.

std.traits modülünün diğer olanakları da benzer biçimde kullanılırlar.

Özet

__traits ve std.traits türler hakkında derleme sırasında bilgi edinmeye yararlar. Özellikle __traits, derleyicinin derleme sırasında toplamış olduğu bilgileri edinmeye yarayan güçlü bir olanaktır.