枚举用于定义命名常量的值。枚举类型是使用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