Mojo Academy · บทเรียน

ฟังก์ชันทั่วไปเหนือ Trait

เขียนฟังก์ชันเดียวสำหรับหลายชนิดข้อมูล

บทเรียน 4 จาก 413 ขั้นตอน

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

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

  1. Trait คืออะไร
  2. การทำให้ struct สอดคล้องกับ Trait
  3. Trait ในตัว เช่น Copyable
  4. ฟังก์ชันทั่วไปเหนือ Trait
← กลับไปที่ Mojo Academy