Merhaba,
Sonunda dişime göre öğrenebileceğim bir tartışma yabancı forumda alevlendi. Kırklı yaşlarıma geldim, hala şu nesneye dayalı programlamaya dair soru işaretleri bitmiyor. Son tartışma (1 gün önceki) güzel, kesinlike tavsiye edeceğim cinsten. Hatta out
öznitelği ile alakalı başlıktan sonra mutlaka bakılmalı diye düşünüyorum, işte:
https://forum.dlang.org/thread/pvwltfoetuncbpuuudcd@forum.dlang.org
Bu sadece bir duyuru olmayacak! Belki herkesin ortak ve her gün kodladığı şeylere bir nebze değineceğiz. Hatta herkes kesesine bir şey biriktirip gidebilir şu mübarek günlerde; bayrama yaklaştığımız!
Sorudaki (Andy'nin paylaştığı) örneği cevabıyla birlikte biraz değiştirdim:
class C : SC
{
string msg;
this(string str)
{
this(); //Ali ekledi
msg = str;
}
// monkyyy ekledi
this(A...)(A args)
{
super(args);
}
}
alias SC = StaticCounter;
class StaticCounter
{
static int id;
this() { ++id; }
}
void main()
{
auto b1 = new C();
b1.id.writeln(": ", b1.msg);
auto b2 = new C("Hi, Mom!");
b2.id.writeln(": ", b2.msg);
}
Yukardaki kod temelde orijinal örnekle aynı ve çıktısı b1 ve b2'yi sayacak şekilde düzenlendi. Bunun için statik bir sayaç kullandım ama dikkat sınıf statik değil sadece üyesi (int id
) öyle. Bir de farklı olan super()
ile beraber ekstradan this()
kurucunun çağrılmış olması...
Aslında yukardaki kodda biri Ali hocadan olan 2 cevap gizli. Diğer arkadaş argüman parametresi alması gerektiği şekilde cevaplarken Ali hocanın sezgisi super keyword'ü yerine this kullanıması yönünde. İşin ilginci kodu her iki şekilde de derliyorsunuz.
Neyse, asıl irdelemek istediğim diğer mesajdı çünkü bu çok simple yapıyı nested haline sokabilir miyim diye düşündüm ve iç içe yeni bir sınıfımız daha oldu, soru orda, diğer mesajda yer alacak :)
SDB@79