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

ข้อจำกัด on และลำดับมิกซ์อิน

จำกัดและซ้อนมิกซ์อินอย่างถูกต้อง

ข้อจำกัด on และลำดับมิกซ์อิน เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน

มิกซินพร้อมข้อกำหนด

บางครั้งมิกซินจะมีความหมายเฉพาะเมื่อใช้กับคลาสบางประเภท Dart ให้คุณกำหนดกฎนั้นด้วยข้อจำกัด on เพื่อจับการใช้งานผิดได้ตั้งแต่เนิ่น ๆ 🔒

คีย์เวิร์ด on

การเพิ่ม on SomeType จะจำกัดว่ามิกซินนำไปใช้ที่ใดได้บ้าง เฉพาะคลาสที่ขยายหรือใช้งานชนิดนั้นเท่านั้นจึงจะใช้มิกซินได้

mixin Walker on Animal {
  void walk() => print('Walking');
}

เหตุผลที่ต้องจำกัดมิกซิน

ข้อจำกัดรับรองว่ามิกซินจะเรียกใช้สมาชิกของชนิดพื้นฐานได้อย่างปลอดภัย ชนิดที่ระบุหลัง on จะพร้อมใช้งานภายใน method ของมิกซิน

mixin Walker on Animal {
  void move() => breathe();
}

บังคับตรวจสอบขณะคอมไพล์

ลองผสาน Walker เข้ากับคลาสที่ไม่ใช่ Animal แล้ว Dart จะ ปฏิเสธการคอมไพล์ ข้อจำกัดนี้ช่วยป้องกันปัญหาก่อนถึงเวลาทำงานจริง

เรียก super ในมิกซิน

มิกซินที่มีข้อจำกัดสามารถเรียก super ไปยัง method ของชนิดพื้นฐานได้ ทำให้มิกซินครอบหรือขยายพฤติกรรมที่รู้ว่าต้องมีอยู่แน่นอนได้

mixin Logged on Animal {
  @override
  void speak() { print('log'); super.speak(); }
}

ลำดับมีความสำคัญ

เมื่อระบุมิกซินหลายตัว Dart จะนำมาใช้จาก ซ้ายไปขวา แต่ละตัวจะซ้อนทับตัวก่อนหน้าและสร้างสายโซ่เชิงเส้น

class C extends Base with A, B {}
// order: Base, then A, then B

การทำให้เป็นลำดับเชิงเส้น

Dart จัดคลาสและมิกซินของคลาสให้เป็นบรรทัดเดียวที่มีลำดับ เรียกว่า การทำให้เป็นลำดับเชิงเส้น ลำดับนี้จะตัดสินว่า method ใดชนะเมื่อชื่อซ้ำกัน

มิกซินตัวสุดท้ายชนะ

หากมิกซินสองตัวกำหนด method เดียวกัน ตัวที่ระบุไว้ ท้ายสุดจะมีลำดับความสำคัญสูงกว่า เปลี่ยนลำดับในรายการ with แล้วเวอร์ชันที่ชนะก็จะเปลี่ยนตาม

class C with A, B {}
// B's version overrides A's

super เดินไปตามสายโซ่

ภายในมิกซิน super จะชี้ไปยังสมาชิกถัดลงไปในสายโซ่ที่จัดเป็นลำดับ ไม่ใช่คลาสดั้งเดิม นี่คือวิธีที่มิกซินซ้อนกันทำงานร่วมกัน

ซ้อนพฤติกรรมเป็นชั้น ๆ

ด้วยการเชื่อมโยงการเรียก super มิกซินหลายตัวสามารถเพิ่มขั้นตอนรอบ method เดียวกันได้ คุณจึงสร้างพฤติกรรมแบบ หลายชั้น เช่น ตัวกลางที่ครอบการทำงานหลัก

ใช้ลำดับเป็นเครื่องมือออกแบบ

เลือกจงใจว่าจะเรียงมิกซินอย่างไร เพราะลำดับนั้นควบคุมการเขียนทับและการไหลของ super มองรายการ with เป็น ลำดับที่มีความหมาย ไม่ใช่การเรียงแบบสุ่ม

ตรวจสอบอย่างรวดเร็ว

มิกซินสองตัวกำหนด method เดียวกัน ตัวใดจะทำงาน

สรุปทบทวน

คุณจำกัดมิกซินด้วย on เรียนรู้ว่าลำดับทำงานจากซ้ายไปขวา และเห็นว่าการทำให้เป็นลำดับเชิงเส้นกับ super เป็นตัวตัดสินว่า method ใดชนะ 🎯

คำถามที่พบบ่อย

บทเรียน “ข้อจำกัด on และลำดับมิกซ์อิน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ข้อจำกัด on และลำดับมิกซ์อิน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ข้อจำกัด on และลำดับมิกซ์อิน”

จำกัดและซ้อนมิกซ์อินอย่างถูกต้อง คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ข้อจำกัด on และลำดับมิกซ์อิน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม

ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. extends และการเขียนทับเมธอด
  2. การเรียก super และการเชื่อมคอนสตรักเตอร์
  3. มิกซ์อินด้วยคีย์เวิร์ด with
  4. ข้อจำกัด on และลำดับมิกซ์อิน
← กลับไปที่ Dart Academy