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 structları 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 classlarından daha low-level de diyebiliriz. Yani demek istediğim şu: structları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ı.
Permalink
Reply