Zig Academy · บทเรียน

พารามิเตอร์และค่าของ comptime

ส่งค่าที่มีอยู่ตั้งแต่เวลาคอมไพล์

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

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

อาร์กิวเมนต์บางอย่างต้องทราบล่วงหน้า

บางครั้งฟังก์ชันต้องการอาร์กิวเมนต์ที่คอมไพเลอร์มองเห็นได้ ไม่ใช่แค่โปรแกรมที่กำลังทำงาน Zig ให้คุณกำหนดพารามิเตอร์ดังกล่าวเป็น comptime ได้ 🧩

กำหนดพารามิเตอร์เป็น comptime

เขียน comptime ไว้หน้าชื่อพารามิเตอร์เพื่อกำหนดให้ค่าของมันต้องทราบในเวลาคอมไพล์ ผู้เรียกจะต้องส่งค่าที่ทราบอยู่แล้วเข้ามา

fn repeat(comptime n: usize) void {}

ผู้เรียกส่งค่าที่ทราบอยู่แล้ว

พารามิเตอร์ comptime รับได้เฉพาะค่าที่คอมไพเลอร์ทราบอยู่แล้ว เช่น ค่าตามตัวอักษรหรือค่าคงที่เวลาคอมไพล์อื่น ๆ

repeat(3);

ค่าขณะทำงานจะถูกปฏิเสธ

หากส่งค่าที่ทราบได้เฉพาะในเวลาทำงานเข้าไปยังพารามิเตอร์ comptime Zig จะแจ้งข้อผิดพลาดขณะคอมไพล์อย่างชัดเจน

comptime ภายในเนื้อหาฟังก์ชัน

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

const table = comptime buildTable();

comptime var สำหรับสถานะเวลาคอมไพล์

comptime var คือตัวแปรที่เปลี่ยนค่าได้และมีอยู่เฉพาะระหว่างการคอมไพล์ ใช้เพื่อสะสมค่าในขณะที่โค้ดเวลาคอมไพล์ทำงาน

comptime var sum = 0;

ค่าที่ทราบช่วยปรับเฉพาะฟังก์ชัน

เนื่องจากอาร์กิวเมนต์ comptime มีค่าตายตัว Zig จึงสามารถสร้างฟังก์ชันรุ่นที่ปรับให้เหมาะกับค่าดังกล่าวโดยเฉพาะได้

ผสมพารามิเตอร์ comptime กับพารามิเตอร์ปกติ

ฟังก์ชันหนึ่งรับพารามิเตอร์ทั้งสองชนิดพร้อมกันได้: พารามิเตอร์ comptime สำหรับส่วนที่ทราบล่วงหน้า และพารามิเตอร์ปกติสำหรับข้อมูลขณะทำงาน

fn scale(comptime factor: u8, x: u32) u32 {
    return x * factor;
}

ตรวจสอบอาร์กิวเมนต์ตั้งแต่เนิ่น ๆ

เมื่อทราบค่าแล้ว คุณสามารถตรวจสอบได้ระหว่างการคอมไพล์และหยุดการสร้างโปรแกรมหากค่าผิด ก่อนที่โปรแกรมจะเริ่มทำงาน ✅

ไม่มีต้นทุนขณะทำงาน

งานที่ขับเคลื่อนด้วยพารามิเตอร์ comptime จะเกิดขึ้นระหว่างการสร้างโปรแกรม ไบนารีที่ได้จะเก็บผลลัพธ์ไว้โดยไม่เหลือสิ่งใดให้คำนวณอีก

ภายในฟังก์ชัน พารามิเตอร์จะเป็นค่าคงที่

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

fn buffer(comptime n: usize) [n]u8 {
    return undefined;
}

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

ฟังก์ชันประกาศพารามิเตอร์เป็น comptime n: usize ผู้เรียกต้องส่งค่าชนิดใด

สรุป

กำหนดพารามิเตอร์เป็น comptime เพื่อบังคับให้เป็นค่าเวลาคอมไพล์ จากนั้น Zig จะตรวจสอบค่าและปรับเฉพาะฟังก์ชันได้โดยไม่มีต้นทุนขณะทำงาน 🎯

เริ่มต้นได้ฟรี

เรียนรู้ Zig ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

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

บทเรียน “พารามิเตอร์และค่าของ comptime” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “พารามิเตอร์และค่าของ comptime”

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

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

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

บทเรียน “พารามิเตอร์และค่าของ comptime” ใช้เวลานานแค่ไหน

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

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

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

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

  1. เวลาคอมไพล์เทียบกับเวลาทำงาน
  2. พารามิเตอร์และค่าของ comptime
  3. ชนิดข้อมูลคือค่า comptime
  4. inline for และลูปที่คลี่ออก
← กลับไปที่ Zig Academy