D編程 枚舉

2021-09-01 10:16 更新

枚舉用于定義命名常量值,使用 enum 關(guān)鍵字聲明枚舉類型。

Enum語法

枚舉定義的最簡單形式如下:

enum enum_name {  
   enumeration list 
}
  • enum_name         -  指定枚舉類型名稱。
  • enumeration list  -  是用逗號分隔的標識符列表。

枚舉列表中的每個符號代表一個整數(shù)值,該整數(shù)值比其前面的符號大一個,默認情況下,第一個枚舉符號的值為0。如-

enum Days { sun, mon, tue, wed, thu, fri, sat };

Enum示例

以下示例演示枚舉變量的使用-

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;
}

編譯并執(zhí)行上述代碼后,將產(chǎn)生以下輸出-

Current Day: 1 
Friday : 5

在上面的程序中,我們可以看到如何使用枚舉,最初,我們根據(jù)用戶定義的枚舉天數(shù)創(chuàng)建一個名為 day 的變量,然后,使用點運算符將其設(shè)置為 mon ,我們需要使用writefln方法來打印已存儲的mon的值,您還需要指定類型,它是整數(shù)類型,因此我們使用%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; 
}

編譯并執(zhí)行上述代碼后,將產(chǎn)生以下輸出-

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; 
}

編譯并執(zhí)行上述代碼后,將產(chǎn)生以下輸出-

Sunday : 0
Monday : 1

匿名枚舉的工作方式與命名枚舉幾乎相同,但是它們沒有max,min和sizeof屬性。

基本枚舉類型

基本類型枚舉的語法如下所示。

enum :baseType {  
   enumeration list 
}

一些基本類型包括long,int和string,下面是使用字符串的示例。

 

import std.stdio;
  
enum : string { 
   A="hello", 
   B="world", 
} 
  
int main(string[] args) { 
   writefln("A : %s", A); 
   writefln("B : %s", B); 
   
   return 0; 
}

編譯并執(zhí)行上述代碼后,將產(chǎn)生以下輸出-

A : hello
B : world

更多函數(shù)

D中的枚舉提供了諸如在多個類型的枚舉中初始化多個值之類的函數(shù)。一個如下所示。

 

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; 
}

編譯并執(zhí)行上述代碼后,將產(chǎn)生以下輸出-

A : 1.200000
B : 2.200000
C : 3
D : 4


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號