D-programming-enums

提供:Dev Guides
移動先:案内検索

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