Merhaba,
En son, AA (associative array) ve enum çerçevesinde şu konuya değinmiştim:
enum'lara nitelikli CT işlevi yükleme
Aslında orada, normalde çalışma zamanı (RT) ilklenen ilişkisel dizi(AA)'nin D içine yedirilmiş çok güzel bir derleme zamanı (CT) olanağını görüyoruz. Şimdi ise farklı bir konuya gireceğiz!
AŞAĞIDAKİ BİR D KODU DEĞİLDİR
enum Foo
{
a0 = 1,
a1
}
enum Bar: Foo
{
a2 // 3
}
YUKARDAKİ BİR D KODU DEĞİLDİR
Ama kod D'de derlenir! Bilmem derlenmeli midir çünkü türü belirleme özelliğine ihtiyacımız da var. Yine beklendiği gibi kalıtım almayacağını bilin yeter. İşte bir uygulamalı örnek:
void main()
{
char[] hex;
enum Hex : char {
h0 = 48, h1, h2, h3, h4, h5, h6, h7, h8, h9,
a10 = 65, b11, c13, d14, e15, f16
}
with(Hex) {
hex = [
h0, h1, h2, h3, h4, h5, h6, h7, h8, h9,
a10, b11, c13, d14, e15, f16
];
}
enum Num : Hex { num }
hex ~= [Num.num.a10];
assert(Hex.a10 == 65);
assert(Num.num == 0);
import std.stdio;
writeln(hex); // 0123456789ABCDEFA
}
Yakında ilgi duyan olursa CT örneklerine başlayacağım. D'nin büyüsüne kapılma zamanı!
Başarılar...