鍍金池/ 教程/ C++/ D語(yǔ)言枚舉Enums
類的訪問修飾符
D語(yǔ)言運(yùn)算符
D語(yǔ)言邏輯運(yùn)算符
類指針
D語(yǔ)言元組
D語(yǔ)言指針
D語(yǔ)言模塊
D語(yǔ)言sizeof運(yùn)算符
D語(yǔ)言混合類型
D語(yǔ)言封裝
D語(yǔ)言條件編譯
類的靜態(tài)成員
D語(yǔ)言do...while循環(huán)
D語(yǔ)言結(jié)構(gòu)體
重載
D語(yǔ)言字符串-String
D語(yǔ)言決策語(yǔ)句
D語(yǔ)言接口
D語(yǔ)言for循環(huán)
D語(yǔ)言switch語(yǔ)句
D語(yǔ)言關(guān)聯(lián)數(shù)組
D語(yǔ)言范圍
D語(yǔ)言枚舉Enums
契約式編程
D語(yǔ)言并發(fā)
D語(yǔ)言開發(fā)環(huán)境設(shè)置
D語(yǔ)言別名
D語(yǔ)言常值
D語(yǔ)言常量
D語(yǔ)言函數(shù)
D語(yǔ)言if嵌套語(yǔ)句
D語(yǔ)言循環(huán)
D語(yǔ)言概述,D語(yǔ)言是什么?
D語(yǔ)言運(yùn)算符優(yōu)先級(jí)
D語(yǔ)言continue語(yǔ)句
D語(yǔ)言異常處理
D語(yǔ)言break語(yǔ)句
D語(yǔ)言if...else語(yǔ)句
D語(yǔ)言類和對(duì)象
類繼承
D語(yǔ)言字符
D語(yǔ)言教程
D語(yǔ)言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語(yǔ)言抽象類
D語(yǔ)言if語(yǔ)句
D語(yǔ)言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語(yǔ)言類成員函數(shù)
D語(yǔ)言位運(yùn)算符
D語(yǔ)言變量
D語(yǔ)言數(shù)據(jù)類型
D語(yǔ)言文件I/O
D語(yǔ)言數(shù)組
一元運(yùn)算符重載
D語(yǔ)言嵌套switch語(yǔ)句
D語(yǔ)言基本語(yǔ)法
二元運(yùn)算符重載
this指針
D語(yǔ)言聯(lián)合體
D語(yǔ)言模板
D語(yǔ)言嵌套循環(huán)
D語(yǔ)言while循環(huán)

D語(yǔ)言枚舉Enums

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

枚舉語(yǔ)法

枚舉定義的最簡(jiǎn)單的形式是這樣的:

enum enum_name { 
enumeration list
}

那么,

  • enum_name指定枚舉類型名稱。

  • 枚舉列表是一個(gè)逗號(hào)分隔的標(biāo)識(shí)符列表。

每個(gè)枚舉列表中的符號(hào)代表一個(gè)整數(shù)值,比它前面的符號(hào)一個(gè)更大的。默認(rèn)情況下,第一個(gè)枚舉符號(hào)的值是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;
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會(huì)產(chǎn)生以下結(jié)果:

Current Day: 1
Friday : 5

在上面的程序中,我們可以看到如何枚舉都可以使用。最初,我們創(chuàng)建用戶定義的枚舉Days,一個(gè)命名的變量day。然后,我們將它使用點(diǎn)運(yùn)算符設(shè)置為mon。需要使用writefln方法打印周一的是被存儲(chǔ)的值。您還需要指定類型。在這里,它的整數(shù)類型,所以我們使用%d。

命名枚舉的屬性

在上面的例子中使用了名稱為Days枚舉,被稱為命名枚舉。這些命名枚舉具有以下性質(zhì)

  • init 初始化枚舉中的第一個(gè)值。

  • min 返回枚舉的最小值。

  • max 返回枚舉的最大值。

  • size 返回存儲(chǔ)的大小為枚舉。

讓我們修改前面的例子來使用屬性。

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

讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:

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

讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:

Sunday : 0
Monday : 1

匿名枚舉工作幾乎與命名枚舉方式一樣,但不具有最大值,最小值和sizeof屬性。

用枚舉的基本類型

基類型為枚舉的語(yǔ)法如下所示。

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

讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:

A : hello
B : world

更多功能

枚舉在D語(yǔ)言中提供與多種類型的枚舉像多個(gè)值的初始化功能。例子如下所示。

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

讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:

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