0Pricing
Dart Academy · บทเรียน

ใช้ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ประกาศและใช้ enum แบบพื้นฐาน
  2. ค่า enum, index และ name
  3. enum ที่เพิ่มเติมด้วยฟิลด์และเมธอด
  4. ใช้ switch กับ enum ให้ครบทุกกรณี
← กลับไปที่ Dart Academy