[D] Struktury w D

W języku C++ różnica pomiędzy klasą i strukturą sprowadza się w zasadzie do domyślnego kwalifikatora dostępu do składowych. W języku D różnica jest jednak głębsza

W D

  • struktury są typami wartości (value type) podczas gdy klasy są typami referencyjnymi (reference type).
  • brak dziedziczenia i interfejsów
  • pamięc domyślnie alokowana na stosie
struct ColorT( T ) {
	T r;
	T g;
	T b;
	T a;
};

alias ColorT!(int) Color;

struct Material {
	Color ambient;
	Color diffuse;
	Color specular;
};

Inicjalizacja struktur

Statyczna

static Material material = {
     ambient  : {255,0,0,255} ,
     diffuse   : {0,255,0,255},
     specular : {255,0,0,255}
};

Dynamiczna

Polega na użyciu istniejącego egzemplarza typu

Material material;
m.diffuse   = { r:255, g:127, b:10, a:255};
m.specular  = { r:127, g:127, b:0,  a:255};
m.ambient   = { r:255, g:255, b:0,  a:255};

Material material2 = material;

Przeciążony operator opCall

struct Material {
...
static Material opCall(Color amb, Color diff, Color spec) {
     Material m ;
     m.ambient = amb;
     m.specular= spec;
     m.diffuse  = diff;
     return m;
}
...
}

Material material = Material(ambientColor, diffuseColor, specularColor);

Structs & Unions

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s