列舉用於定義命名常數的值。列舉型別是使用enum關鍵字宣告的。
列舉定義的最簡單的形式是這樣的:
enum enum_name { enumeration list }
那麼,
enum_name指定列舉型別名稱。
列舉列表是一個逗號分隔的識別符號列表。
每個列舉列表中的符號代表一個整數值,比它前面的符號一個更大的。預設情況下,第一個列舉符號的值是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方法列印週一的是被儲存的值。您還需要指定型別。在這裡,它的整數型別,所以我們使用%d。
在上面的例子中使用了名稱為Days列舉,被稱為命名列舉。這些命名列舉具有以下性質
init 初始化列舉中的第一個值。
min 返回列舉的最小值。
max 返回列舉的最大值。
size 返回儲存的大小為列舉。
讓我們修改前面的例子來使用屬性。
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 : 3 Max : 9 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
匿名列舉工作幾乎與命名列舉方式一樣,但不具有最大值,最小值和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