UFCS ile:
struct Köpek
{
uint yaş;
char[32] isim;
}
char[32] havla(Köpek k)
{
return "Hav hav!";
}
uint köpekYılınaGöreYaş(Köpek k)
{
return k.yaş * 7;
}
int main(int argc, const(char)** argv)
{
Köpek k = Köpek(3, "D'og");
assert(k.köpekYılınaGöreYaş == 21); // köpekYılınaGöreYaş(k)
assert(k.havla == cast(char[32])"Hav hav!"); // havla(k)
return 0;
}
Metotlar İle
struct Köpek
{
uint yaş;
char[32] isim;
char[32] havla()
{
return "Hav hav!";
}
uint köpekYılınaGöreYaş()
{
return yaş * 7;
}
}
int main(int argc, const(char)** argv)
{
Köpek k = Köpek(3, "D'og");
assert(k.köpekYılınaGöreYaş == 21); // k.köpekYılınaGöreYaş()
assert(k.havla == cast(char[32])"Hav hav!"); k.havla()
return 0;
}
İki sorum var:
I. D'nin struct
ları nasıl C'ninkinden daha low-level tanımlanıyor; Gerçekten bilmiyorum inline assembly
özelliği olan bir dil, falan filan ayrıntıları atladığımızda, zaten en en en low-level hâle gelmiş olmaz mı? (C++'ınkiler nasıl D'nin class
larından daha low-level de diyebiliriz. Yani demek istediğim şu: struct
larımızın özelliklerini, atıyorum, ilkleyebildiğimiz için mi D, C'ninkilerden daha low level?)
II. UFCS kullanarak overloading ederek struct
özel hâle getirdiğimiz fonksiyonların, sıradan tür metotları yazmaktan farkı nedir, bence betterC için epey hoş aslında ama merak ettiğim şey neyi farklı yaptığı, belki avantajları veya dezavantajları.