คลาสและเมธอดแบบ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุใด generics จึงดีกว่า dynamic
- คลาสและเมธอดแบบ generic
- พารามิเตอร์ชนิดข้อมูลแบบมีขอบเขตด้วย extends
- คอลเลกชันแบบ generic ในการใช้งานจริง