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

คลาสและเมธอดแบบ generic

กำหนดพารามิเตอร์ให้ชนิดข้อมูลของคุณเอง

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

สร้างเจเนอริกของคุณเอง

ประเภทข้อมูลที่มีมาให้ในตัวอย่าง List เป็นเจเนอริก และคุณก็เขียนเจเนอริกของตัวเองได้เช่นกัน พารามิเตอร์ประเภทข้อมูลช่วยให้คลาสของคุณปรับใช้กับประเภทใดก็ได้ที่ผู้เรียกเลือก 🧩

ตั้งชื่อพารามิเตอร์ประเภทข้อมูล

คุณเพิ่ม พารามิเตอร์ประเภทข้อมูลไว้ในวงเล็บมุมหลังชื่อคลาส ตัวอักษร T เป็นตัวยึดตำแหน่งที่ใช้กันทั่วไปเพื่อแทนประเภทข้อมูลจริง

class Box<T> {
  T value;
  Box(this.value);
}

ใช้ T ภายในคลาส

ภายในคลาส T จะทำหน้าที่เหมือนชื่อประเภทข้อมูลใด ๆ คุณสามารถใช้ T กับเขตข้อมูล พารามิเตอร์ และค่าที่ส่งกลับได้ตลอดทั้งส่วนเนื้อหา

class Box<T> {
  T value;
  Box(this.value);
  T get() => value;
}

กำหนดประเภทข้อมูล

เมื่อสร้างออบเจ็กต์ คุณจะเลือกประเภทข้อมูลจริง ในที่นี้ T จะกลายเป็น int ดังนั้นกล่องนี้จึงเก็บได้เฉพาะจำนวนเต็มเท่านั้น

var b = Box<int>(42);
int n = b.get();

ให้ Dart อนุมานประเภทข้อมูล

บ่อยครั้งคุณไม่จำเป็นต้องระบุประเภทข้อมูลอย่างชัดเจน เพราะ Dart อ่านได้จากอาร์กิวเมนต์ การอนุมานจะเห็นว่าเป็น String แล้วกำหนดค่า T ให้คุณ

var b = Box('hi');

พารามิเตอร์ประเภทข้อมูลหลายตัว

คลาสหนึ่งสามารถรับ พารามิเตอร์ประเภทข้อมูลได้มากกว่าหนึ่งตัว โดยคั่นด้วยจุลภาค Pair ที่เก็บประเภทข้อมูลต่างกันสองประเภทเป็นตัวอย่างคลาสสิก

class Pair<A, B> {
  A first;
  B second;
  Pair(this.first, this.second);
}

เมธอดแบบเจเนอริก

คุณสามารถทำให้ เมธอดเพียงเมธอดเดียวเป็นเจเนอริกได้ แม้จะอยู่ในคลาสที่ไม่ใช่เจเนอริกก็ตาม ให้วางพารามิเตอร์ประเภทข้อมูลไว้ก่อนรายการพารามิเตอร์

T firstOf<T>(List<T> items) => items[0];

เมธอดก็อนุมานประเภทข้อมูลได้เช่นกัน

เมธอดแบบเจเนอริกมักอนุมานประเภทข้อมูลจากอาร์กิวเมนต์ที่คุณส่งให้ เพียงเรียกใช้ตามปกติ แล้ว Dart จะจัดการส่วนที่เหลือให้

var n = firstOf([1, 2, 3]);
var s = firstOf(['a', 'b']);

ความปลอดภัยด้านประเภทข้อมูลกลับมา

เนื่องจากเมธอดติดตาม T ผลลัพธ์จึงคงประเภทข้อมูลที่ถูกต้องไว้ firstOf กับรายการ String จะคืนค่า String ให้คุณโดยไม่ต้องแปลงประเภท

String x = firstOf(['a', 'b']);

นำกลับมาใช้ซ้ำ ไม่ต้องเขียนซ้ำ

คำจำกัดความแบบ เจเนอริกหนึ่งรายการแทนที่เวอร์ชันจำนวนมากที่คัดลอกและวางได้ คุณเขียนตรรกะเพียงครั้งเดียว แล้วใช้กับ int, String และประเภทข้อมูลที่กำหนดเองได้ทั้งหมด

เลือกชื่อที่ชัดเจน

ตัวอักษรเดี่ยวอย่าง T, E หรือ K เป็นรูปแบบที่ใช้กันทั่วไป แต่ ชื่อที่สื่อความหมายก็ช่วยได้เช่นกัน ในโค้ดที่ซับซ้อน ความชัดเจนสำคัญกว่าความสั้น

ตรวจสอบความเข้าใจอย่างรวดเร็ว

พารามิเตอร์ประเภทข้อมูลอยู่ที่ใดเมื่อประกาศคลาส

สรุปทบทวน

คุณได้เรียนรู้การเพิ่ม พารามิเตอร์ประเภทข้อมูลอย่าง T ให้กับคลาสและเมธอดของคุณเองแล้ว Dart จะเติมค่าให้ ซึ่งมักทำโดยการอนุมาน ทำให้โค้ดนำกลับมาใช้ซ้ำได้และปลอดภัย ✅

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

บทเรียน “คลาสและเมธอดแบบ generic” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “คลาสและเมธอดแบบ generic”

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

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

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

บทเรียน “คลาสและเมธอดแบบ generic” ใช้เวลานานแค่ไหน

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

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

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

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

  1. เหตุใด generics จึงดีกว่า dynamic
  2. คลาสและเมธอดแบบ generic
  3. พารามิเตอร์ชนิดข้อมูลแบบมีขอบเขตด้วย extends
  4. คอลเลกชันแบบ generic ในการใช้งานจริง
← กลับไปที่ Dart Academy