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
inttüründe olduğunu okudunuz. (Yanishort,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:floatmu,doublemı, yoksarealmi? Yeni öğrendiğiniztypeof, ve temel türler dersinde öğrendiğiniz.stringofişe yarayabilir.
D.ershane
Forum
Wiki
Projeler
Tanıtım
İletişim
Hakları