D-programming-enums
Dプログラミング-列挙
名前付き定数値の定義には列挙が使用されます。 列挙型は、 enum キーワードを使用して宣言されます。
_enum_構文
列挙型定義の最も単純な形式は次のとおりです-
enum enum_name {
enumeration list
}
どこで、
- _enum_name_は、列挙型の名前を指定します。
- _enumeration list_は、識別子のコンマ区切りリストです。
列挙リスト内の各シンボルは整数値を表し、その前のシンボルよりも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_に設定します。 writeflnメソッドを使用して、保存されているmonの値を出力する必要があります。 タイプも指定する必要があります。 これは整数型であるため、印刷には%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
匿名の列挙
名前のない列挙は、匿名列挙と呼ばれます。 *匿名列挙*の例を以下に示します。
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