ค่า Enum ในภาษาโปรแกรมนั้น ถูกนำมาใช้เป็นตัวแทนของข้อมูลที่มีจำนวนและประเภทชัดเจน เช่น
- ขนาดเครื่องนุ่งห่ม: XS, S, M, L, XL, XXL
- สถานะเปิดปิด: ON, OFF
- สถานะสินค้าในคลัง: IN STOCK, SOLD OUT
ซึ่งเราสามารถเขียนโค้ดกำหนด enum ขึ้นมาได้เป็นแบบนี้
enum Size {
case XS, S, M, L, XL, XXL
}
enum StockStatus {
case IN_STOCK, SOLD_OUT
}
และเราเอามาอ้างอิงในการเปรียบเทียบ (Comparison) ในโค้ดโปรแกรม เพราะสะดวกสบายกว่าการใช้งานค่า String หรือ integer
if( product.stockStatus == StockStatus.IN_STOCK) {
}
ทีนี้โจทย์ของเราอาจจะมาถึงจุดที่ว่า ถ้าเราอยากเอาชื่อของค่าต่างๆ ใน enum มาแสดงเป็นข้อความ String จะทำยังไง
1. ประกาศ Enum เป็น String และใช้งานผ่าน rawValue
enum Size : String {
case XS, S, M, L, XL, XXL
}
let selectedSize = Size.L.rawValue // "L"
- สังเกตว่าเรากำหนดชนิดของข้อมูล (Data type) Size เป็น String
- จากนั้นเราสามารถเรียกข้อมูลของ Enum ของเราผ่าน
.rawValue
ครับ
2. ใช้ String(describing:)
หรือใน Swift เวอร์ชั่นหลังๆ มาก็มีอีกวิธี นั่นคือใช้ String(describing:)
นั่นเอง
enum Size : String {
case XS, S, M, L, XL, XXL
}
let selectedSize = String(describing: Size.L) // "L"
จริงๆ มีอีกหลายวิธี แต่วิธีที่ซับซ้อนน้อยที่สุด และตรงกับความต้องการของพลจะเป็นแบบด้านบนครับ สนใจไปดูต่อได้ใน StackOverflow เลย
อ้างอิง – StackOverflow