Dプログラミング-列挙型
列挙型は、名前付き定数値を定義するために使用されます。列挙型は、を使用して宣言されますenum キーワード。
列挙型の構文
列挙型定義の最も単純な形式は次のとおりです。
enum enum_name {
enumeration list
}
どこ、
enum_nameは、列挙型の名前を指定します。
列挙リストは、識別子のカンマ区切りリストです。
列挙リスト内の各記号は、その前の記号より1つ大きい整数値を表します。デフォルトでは、最初の列挙シンボルの値は0です。たとえば、-
enum Days { sun, mon, tue, wed, thu, fri, sat };
例
次の例は、列挙型変数−の使用法を示しています。
import std.stdio;
enum Days { sun, mon, tue, wed, thu, fri, sat };
int main(string[] args) {
Days day;
day = Days.mon;
writefln("Current Day: %d", day);
writefln("Friday : %d", Days.fri);
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が得られます。
Current Day: 1
Friday : 5
上記のプログラムでは、列挙型の使用方法を確認できます。最初に、ユーザー定義の列挙Daysのdayという名前の変数を作成します。次に、ドット演算子を使用してmonに設定します。格納されているmonの値を出力するには、writeflnメソッドを使用する必要があります。タイプも指定する必要があります。整数型であるため、印刷には%dを使用します。
名前付き列挙型プロパティ
上記の例では、列挙にDaysという名前を使用しており、名前付き列挙と呼ばれます。これらの名前付き列挙型には、次のプロパティがあります-
Init −列挙の最初の値を初期化します。
min −列挙の最小値を返します。
max −列挙の最大値を返します。
sizeof −列挙用のストレージのサイズを返します。
プロパティを利用するために前の例を変更してみましょう。
import std.stdio;
// Initialized sun with value 1
enum Days { sun = 1, mon, tue, wed, thu, fri, sat };
int main(string[] args) {
writefln("Min : %d", Days.min);
writefln("Max : %d", Days.max);
writefln("Size of: %d", Days.sizeof);
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が得られます。
Min : 1
Max : 7
Size of: 4
匿名列挙型
名前のない列挙は匿名列挙と呼ばれます。の例anonymous enum 以下に示します。
import std.stdio;
// Initialized sun with value 1
enum { sun , mon, tue, wed, thu, fri, sat };
int main(string[] args) {
writefln("Sunday : %d", sun);
writefln("Monday : %d", mon);
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が得られます。
Sunday : 0
Monday : 1
匿名列挙型は、名前付き列挙型とほぼ同じように機能しますが、max、min、およびsizeofプロパティはありません。
基本型構文の列挙型
基本型を使用した列挙の構文を以下に示します。
enum :baseType {
enumeration list
}
基本タイプには、long、int、およびstringが含まれます。longを使用した例を以下に示します。
import std.stdio;
enum : string {
A = "hello",
B = "world",
}
int main(string[] args) {
writefln("A : %s", A);
writefln("B : %s", B);
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が得られます。
A : hello
B : world
その他の機能
Dの列挙型は、複数の型を持つ列挙型の複数の値の初期化などの機能を提供します。以下に例を示します。
import std.stdio;
enum {
A = 1.2f, // A is 1.2f of type float
B, // B is 2.2f of type float
int C = 3, // C is 3 of type int
D // D is 4 of type int
}
int main(string[] args) {
writefln("A : %f", A);
writefln("B : %f", B);
writefln("C : %d", C);
writefln("D : %d", D);
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が得られます。
A : 1.200000
B : 2.200000
C : 3
D : 4