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

在上面的程式中,我們可以看到列舉是如何使用的。首先,我們建立了一個名為day的使用者定義列舉Days的變數。然後,我們使用點運算子將其設定為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
廣告
© . All rights reserved.