Enums
优质
小牛编辑
132浏览
2023-12-01
枚举用于定义命名常量值。 使用enum关键字声明枚举类型。
enum语法
枚举定义的最简单形式如下 -
enum enum_name {
enumeration list
}
Where,
enum_name指定枚举类型名称。
enumeration list是以逗号分隔的标识符列表。
枚举列表中的每个符号代表一个整数值,一个大于它之前的符号。 默认情况下,第一个枚举符号的值为0.例如 -
enum Days { sun, mon, tue, wed, thu, fri, sat };
例子 (Example)
以下示例演示了枚举变量的使用 -
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
在上面的程序中,我们可以看到如何使用枚举。 最初,我们创建一个名为我们用户定义的枚举天数的变量。 然后我们使用点运算符将其设置为mon 。 我们需要使用writefln方法来打印已存储的mon值。 您还需要指定类型。 它是整数类型,因此我们使用%d进行打印。
命名枚举属性
上面的示例使用名称Days作为枚举,并称为命名枚举。 这些命名的枚举具有以下属性 -
Init - 初始化枚举中的第一个值。
min - 返回枚举的最小值。
max - 返回枚举的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
匿名枚举
没有名称的枚举称为匿名枚举。 anonymous enum的示例如下。
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