การเขียนโปรแกรม 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