การเขียนโปรแกรม D - Enums

การแจงนับใช้สำหรับกำหนดค่าคงที่ที่ระบุชื่อ ประเภทที่แจกแจงถูกประกาศโดยใช้enum คำสำคัญ.

enumไวยากรณ์

รูปแบบที่ง่ายที่สุดของคำจำกัดความ enum มีดังต่อไปนี้ -

enum enum_name {  
   enumeration list 
}

ที่ไหน

  • enum_nameระบุชื่อประเภทการแจงนับ

  • รายการแจงนับเป็นรายการที่คั่นด้วยเครื่องหมายจุลภาคของตัวระบุ

สัญลักษณ์แต่ละตัวในรายการการแจงนับย่อมาจากค่าจำนวนเต็มซึ่งมากกว่าสัญลักษณ์ที่นำหน้า ตามค่าเริ่มต้นค่าของสัญลักษณ์การแจงนับแรกคือ 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

ในโปรแกรมข้างต้นเราสามารถดูว่าสามารถใช้การแจงนับได้อย่างไร เริ่มแรกเราสร้างตัวแปรชื่อวันของวันแจงนับที่ผู้ใช้กำหนด จากนั้นเราตั้งค่าเป็นจันทร์โดยใช้ตัวดำเนินการจุด เราจำเป็นต้องใช้เมธอด writefln เพื่อพิมพ์ค่าของ mon ที่ถูกเก็บไว้ คุณต้องระบุประเภทด้วย มันเป็นประเภทจำนวนเต็มดังนั้นเราจึงใช้% d สำหรับการพิมพ์

ชื่อ Enums Properties

ตัวอย่างข้างต้นใช้ชื่อ Days สำหรับการแจงนับและเรียกว่าชื่อ enums enums ที่มีชื่อเหล่านี้มีคุณสมบัติดังต่อไปนี้ -

  • Init - เริ่มต้นค่าแรกในการแจงนับ

  • min - ส่งกลับค่าที่น้อยที่สุดของการแจงนับ

  • 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

Enum นิรนาม

การแจงนับที่ไม่มีชื่อเรียกว่า anonymous enum ตัวอย่างสำหรับ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

Anonymous enums ทำงานในลักษณะเดียวกับ enums ที่ตั้งชื่อ แต่ไม่มีคุณสมบัติ max, min และ sizeof

Enum ที่มีไวยากรณ์ประเภทพื้นฐาน

ไวยากรณ์สำหรับการแจงนับด้วยประเภทฐานแสดงไว้ด้านล่าง

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