D.ershane D Programlama Dili Dersleri

değişken: [variable], kavramları temsil eden veya sınıf nesnesine erişim sağlayan program yapısı
ilklemek: [initialize], ilk değerini vermek
kurma: [construct], yapı veya sınıf nesnesini kullanılabilir duruma getirmek
nesne: [object], belirli bir sınıf veya yapı türünden olan değer
sınıf: [class], kendi üzerinde kullanılan işlevleri de tanımlayan veri yapısı
şablon: [template], derleyicinin örneğin 'türden bağımsız programlama' için kod üretme düzeneği
... bütün sözlük

Bölümler
İngilizce Kaynaklar
Diğer



auto ve typeof

auto

Bir önceki derste File isminden kaynaklanan bir belirsizliğin önüne geçmek için std.stream.File'ın tam ismini uzun olarak yazmak zorunda kalmıştık:

    std.stream.File dosya =
        new std.stream.File("ogrenci_bilgisi", FileMode.In);

O uzun ismi hem de iki kere yazmak gerekmişti: sol tarafta dosya nesnesinin türünü belirtmek için, sağ tarafta ise File sınıfını kurmak için.

Oysa derleyiciler çoğu durumda sol tarafın türünü sağ tarafın türüne bakarak anlayabilirler. Örneğin 42 gibi bir tamsayı değerle ilklenen bir değişkenin int olduğu, veya std.stream.File kurularak oluşturulan bir nesnenin yine std.stream.File türünden olduğu kolayca anlaşılabilir.

D'nin auto anahtar sözcüğü, sol tarafın türünün de sağ tarafla aynı olduğu durumlarda sol tarafın yazımını kolaylaştırmak için kullanılır:

    auto dosya =
        new std.stream.File("ogrenci_bilgisi", FileMode.In);

"auto", otomatik anlamına gelen "automatic"in kısaltmasıdır ve türün otomatik olarak anlaşılması kavramından gelir.

auto'yu her türle kullanabilirsiniz:

    auto sayı = 42;
    auto kesirliSayı = 1.2;
    auto selam = "Merhaba";
    auto vida = BisikletVitesDüzeneğininAyarVidası(10);
typeof

Bu anahtar sözcük, "türü" anlamına gelen "type of" deyiminden türemiştir. Kendisine verilen değişkenin, nesnenin, hazır değerin, vs. türünü üretir.

Örneğin zaten tanımlanmış olan int türünde sayı diye bir değişken olduğunu varsayarsak:

int sayı = 100;        // bu zaten 'int' olarak tanımlanmış

typeof(sayı) sayı2;    // "sayı'nın türü" anlamında
typeof(100) sayı3;     // "100 hazır değerinin türü" anlamında

Yukarıdaki son iki ifade, şu ikisinin eşdeğeridir:

int sayı2;
int sayı3;

Türlerin zaten bilindiği yukarıdaki gibi durumlarda typeof'un kullanılmasına gerek olmadığı açıktır. Bu anahtar sözcük daha sonra anlatılacak olan şablonlar konusunda, ve bu dersin probleminde yararlı olacak.

Problem
  • Yukarıda 42 gibi bir hazır değerin D'nin tamsayı türlerinden int türünde olduğunu okudunuz. (Yani short, long, vs. değil.) Bir program yazarak 1.2 gibi bir hazır değerin türünün D'nin kesirli sayı türlerinden hangisinden olduğunu bulun: float mu, double mı, yoksa real mi? Yeni öğrendiğiniz typeof, ve temel türler dersinde öğrendiğiniz .stringof işe yarayabilir.
... çözüm