D语言 - 枚举类型

D语言 - 枚举类型 首页 / D语言入门教程 / D语言 - 枚举类型

枚举用于定义命名常量值,使用 enum 关键字声明枚举类型。

Enum语法

枚举定义的最简单形式如下:

链接:https://www.learnfk.comhttps://www.learnfk.com/d-programming/d-programming-enums.html

来源:LearnFk无涯教程网

enum enum_name {  
   enumeration list 
}
  • enum_name         -  指定枚举类型名称。

  • enumeration list  -  是用逗号分隔的标识符列表。

枚举列表中的每个符号代表一个整数值,该整数值比其前面的符号大一个,默认情况下,第一个枚举符号的值为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;
}

编译并执行上述代码后,将产生以下输出-

Current Day: 1 
Friday : 5

在上面的程序中,我们可以看到如何使用枚举,最初,我们根据用户定义的枚举天数创建一个名为 day 的变量,然后,使用点运算符将其设置为 mon ,我们需要使用writefln方法来打印已存储的mon的值,您还需要指定类型,它是整数类型,因此我们使用%d进行打印。

命名枚举属性

上面的示例使用名称Days进行枚举,称为命名枚举,这些命名的枚举具有以下属性-

  • Init      -  初始化枚举中的第一个值。

  • min     -  返回枚举的最小值。

  • max    -  返回枚举的最大值。

  • sizeof  -  返回用于枚举的存储空间。

让我们修改前面的示例以利用这些属性。

import std.stdio;

//用值 1 初始化 sun
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

匿名枚举

没有名称的枚举称为匿名枚举,下面给出了匿名枚举的示例。

import std.stdio; 
 
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,下面是使用字符串的示例。

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

编译并执行上述代码后,将产生以下输出-

A : hello
B : Learnfk

更多函数

D中的枚举提供了诸如在多个类型的枚举中初始化多个值之类的函数。一个如下所示。

import std.stdio;
  
enum { 
   A=1.2f,  //A 是 float 类型的 1.2f
   B,         //B 是 float 类型的 2.2f
   int C=3, //C 是 int 类型的 3
   D          //D 是 int 类型的 4
}
  
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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

技术与商业案例解读 -〔徐飞〕

零基础学Java -〔臧萌〕

TypeScript开发实战 -〔梁宵〕

To B市场品牌实战课 -〔曹林〕

Tony Bai · Go语言第一课 -〔Tony Bai〕

自动化测试高手课 -〔柳胜〕

React Native 新架构实战课 -〔蒋宏伟〕

Web 3.0入局攻略 -〔郭大治〕

结构执行力 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)