ฟังก์ชันทั่วไปเหนือ Trait
เขียนฟังก์ชันเดียวสำหรับหลายชนิดข้อมูล
ฟังก์ชันทั่วไปเหนือ Trait เป็นบทเรียน Mojo Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Mojo Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Mojo Academy มีบทเรียนทั้งหมด 4 บทเรียน
หนึ่งฟังก์ชัน หลายชนิดข้อมูล
พลังที่แท้จริงของเทรตอยู่ที่โค้ดแบบ ทั่วไป คุณเขียนฟังก์ชันเพียงครั้งเดียว แล้วใช้ได้กับชนิดข้อมูลทุกชนิดที่ทำตามข้อกำหนด 🚀
เทรตในฐานะข้อจำกัด
คุณใช้เทรตเป็น ข้อจำกัดของพารามิเตอร์ทั่วไป เพื่อรับรองว่าชนิดข้อมูลนั้นมีเมธอดที่คุณเรียกใช้
ไวยากรณ์พารามิเตอร์ทั่วไป
ภายใน วงเล็บเหลี่ยม คุณระบุชื่อพารามิเตอร์ชนิดข้อมูลและเทรตที่พารามิเตอร์นั้นต้องทำตาม จากนั้นจึงใช้งานพารามิเตอร์นั้นเหมือนชนิดข้อมูลใด ๆ
fn announce[T: Greetable](item: T):
print(item.greet())การเรียกใช้เมธอดของเทรต
ภายในฟังก์ชัน คุณสามารถเรียกใช้เมธอดใดก็ได้ที่ เทรตรับรอง คอมไพเลอร์ทราบว่า T มี greet อยู่
ทำงานได้กับทุกชนิดที่ทำตามข้อกำหนด
ส่ง Dog หรือ Robot ไปยังฟังก์ชันเดียวกันได้ ทั้งสองชนิด ทำตามข้อกำหนดของ Greetable จึงได้รับการยอมรับอย่างราบรื่น
announce(Dog("Rex"))
announce(Robot())ความปลอดภัยของชนิดข้อมูลยังคงอยู่
ชนิดข้อมูลทั่วไปไม่ได้เปิดกว้างโดยไร้ข้อจำกัด หากชนิดข้อมูลไม่ตรงตาม ข้อจำกัด คอมไพเลอร์จะปฏิเสธก่อนที่โปรแกรมจะเริ่มทำงาน
ไม่มีต้นทุนขณะทำงาน
Mojo สร้างโค้ดทั่วไปเฉพาะทางใน เวลาคอมไพล์ โดยสร้างเวอร์ชันที่รวดเร็วสำหรับแต่ละชนิดข้อมูล ความยืดหยุ่นจึงไม่ทำให้ความเร็วลดลง
ลดการทำซ้ำ
หากไม่มีชนิดข้อมูลทั่วไป คุณจะต้องคัดลอกฟังก์ชันสำหรับแต่ละชนิดข้อมูล ข้อจำกัดของเทรตช่วยให้คำจำกัดความเดียวรองรับทั้งหมด จึงลด การทำซ้ำ
ข้อจำกัดหลายรายการ
พารามิเตอร์หนึ่งรายการสามารถกำหนดให้ต้องทำตามเทรตหลายรายการพร้อมกัน เพื่อรับรองว่าชนิดข้อมูลมี ความสามารถทั้งหมดที่ฟังก์ชันต้องการ
ออกแบบโดยยึดเทรตเป็นหลัก
ส่วนติดต่อของ Mojo ที่ดีจะขอเทรตที่เล็กที่สุดเท่าที่จำเป็น ฟังก์ชันจึงยังคง ยืดหยุ่น พร้อมระบุข้อกำหนดที่แน่นอนได้
ภาพรวมทั้งหมด
เทรต การทำตามข้อกำหนด และชนิดข้อมูลทั่วไปทำงานร่วมกันได้ดังนี้: กำหนดสัญญา นำไปใช้งาน แล้วเขียนฟังก์ชันที่ นำกลับมาใช้ใหม่ได้เพียงหนึ่งฟังก์ชัน
fn print_all[T: Stringable](x: T):
print(String(x))ตรวจสอบอย่างรวดเร็ว
เหตุใดจึงใช้ข้อจำกัดของเทรตกับฟังก์ชันทั่วไป
สรุปทบทวน
ฟังก์ชันทั่วไปที่มี ข้อจำกัดของเทรตทำงานได้กับชนิดข้อมูลทุกชนิดที่ทำตามข้อกำหนด พร้อมความปลอดภัยของชนิดข้อมูลและความเร็วสูง ตอนนี้คุณเขียน Mojo ที่นำกลับมาใช้ใหม่ได้แล้ว 🎉
เรียนรู้ Mojo ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “ฟังก์ชันทั่วไปเหนือ Trait” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ฟังก์ชันทั่วไปเหนือ Trait” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Mojo Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Mojo Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันทั่วไปเหนือ Trait”
เขียนฟังก์ชันเดียวสำหรับหลายชนิดข้อมูล คุณปฏิบัติ Mojo Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Mojo Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Mojo Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ฟังก์ชันทั่วไปเหนือ Trait” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Mojo Academy นี้ได้ไหม
ได้ บทเรียน Mojo Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Trait คืออะไร
- การทำให้ struct สอดคล้องกับ Trait
- Trait ในตัว เช่น Copyable
- ฟังก์ชันทั่วไปเหนือ Trait