位置:首頁 > 高級語言 > D語言教學 > D語言枚舉Enums

D語言枚舉Enums

枚舉用於定義命名常量的值。枚舉類型是使用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