ใช้ switch กับ enum ให้ครบทุกกรณี
จัดการทุกกรณีที่คอมไพเลอร์ตรวจสอบ
ใช้ switch กับ enum ให้ครบทุกกรณี เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
สวิตช์ชื่นชอบชนิดแจกแจง
เมื่อค่าหนึ่งเป็นหนึ่งในตัวเลือกไม่กี่รายการ สวิตช์จะจัดการแต่ละกรณีได้อย่างเป็นระเบียบ ชนิดแจกแจงกับสวิตช์จึงเข้าคู่กันอย่างเป็นธรรมชาติ
สวิตช์พื้นฐาน
ระบุกรณีหนึ่งรายการต่อสมาชิกของชนิดแจกแจงแต่ละตัว พร้อมโค้ดที่จะทำงานในกรณีนั้น Dart จะจับคู่ค่ากับกรณีที่ตรงกันแล้วทำงานตามแขนงนั้น
switch (status) {
case Status.pending: print("Waiting");
}ความครอบคลุมหมายถึงต้องจัดการทุกกรณี
เมื่อใช้กับชนิดแจกแจง Dart จะตรวจสอบว่าคุณจัดการสมาชิกทุกตัวแล้ว หากขาดไปหนึ่งตัว เครื่องมือวิเคราะห์จะแจ้งเตือนก่อนที่คุณจะเรียกใช้โปรแกรม
เหตุใดความครอบคลุมจึงช่วยได้
ระบบความปลอดภัยนี้มีประโยชน์มาก: หากเพิ่มสมาชิกชนิดแจกแจงใหม่ในภายหลัง ตัวแปลโปรแกรมจะชี้ไปยังสวิตช์ทุกจุดที่คุณต้องปรับปรุง
นิพจน์สวิตช์
นิพจน์สวิตช์จะคืนค่าแทนการเรียกใช้คำสั่ง ใช้ลูกศรหนาเพื่อจับคู่แต่ละกรณีกับผลลัพธ์
var label = switch (status) {
Status.pending => "Waiting",
};กรณีแบบลูกศรกระชับ
ในนิพจน์สวิตช์ แต่ละกรณีใช้รูปแบบ case-value => result คั่นแต่ละกรณีด้วยจุลภาค ทำให้ได้ตารางค้นหาที่กระชับ
Status.shipped => "On the way",Dart ไม่มีการไหลต่อของกรณี
ต่างจากบางภาษา กรณีของ Dart จะไม่ไหลต่อ แต่ละกรณีทำงานเฉพาะโค้ดของตนเอง จึงไม่ต้องมี break ที่เกินจำเป็น
ค่าเริ่มต้นแบบไวลด์การ์ด
ค่าเริ่มต้นหรือ _ จะดักจับทุกสิ่งที่คุณไม่ได้ระบุไว้ แต่เมื่อใช้กับชนิดแจกแจง ควรจัดการสมาชิกแต่ละตัวให้ครบเพื่อความปลอดภัยสูงสุด
default => "Unknown",ค่าเริ่มต้นปิดการตรวจสอบ
การเพิ่มค่าเริ่มต้นแบบครอบคลุมทุกกรณีจะทำให้สวิตช์ถือว่าครบถ้วน Dart จึงหยุดเตือนเรื่องสมาชิกที่ขาดหายไป ควรใช้เท่าที่จำเป็น
ใช้ส่วนการทำงานเดียวกัน
ให้สมาชิกสองตัวใช้แขนงเดียวกันด้วยการระบุไว้รวมกัน ทั้งสองตัวจะทำงานด้วยโค้ดเดียวกันโดยไม่ต้องเขียนซ้ำ
case Status.shipped || Status.delivered: print("Sent");การใช้สวิตช์แบบครอบคลุมคือแนวปฏิบัติ
การไม่ใส่ค่าเริ่มต้นให้ชนิดแจกแจงเป็นคุณสมบัติ ไม่ใช่ภาระ มันเปลี่ยนตัวแปลโปรแกรมให้เป็นรายการตรวจสอบสำหรับการเปลี่ยนแปลงในอนาคต
ตรวจสอบอย่างรวดเร็ว
การใช้สวิตช์แบบครอบคลุมกับชนิดแจกแจงมอบสิ่งใดให้คุณ
สรุปทบทวน: สวิตช์แบบครอบคลุม
คุณได้เห็นว่า สวิตช์จัดการแต่ละกรณีของชนิดแจกแจง คืนค่าผ่านนิพจน์ และเตือนเมื่อมีสมาชิกที่ไม่ได้จัดการ เพื่อความปลอดภัยให้ข้ามค่าเริ่มต้น 🎯
คำถามที่พบบ่อย
บทเรียน “ใช้ switch กับ enum ให้ครบทุกกรณี” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ใช้ switch กับ enum ให้ครบทุกกรณี” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ใช้ switch กับ enum ให้ครบทุกกรณี”
จัดการทุกกรณีที่คอมไพเลอร์ตรวจสอบ คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ใช้ switch กับ enum ให้ครบทุกกรณี” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม
ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ประกาศและใช้ enum แบบพื้นฐาน
- ค่า enum, index และ name
- enum ที่เพิ่มเติมด้วยฟิลด์และเมธอด
- ใช้ switch กับ enum ให้ครบทุกกรณี