inline for และลูปที่คลี่ออก
วนซ้ำในเวลาคอมไพล์
inline for และลูปที่คลี่ออก เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
ลูปที่ทำงานขณะคอมไพล์
inline for คือลูปที่คอมไพเลอร์คลี่ออกระหว่างการคอมไพล์ แทนที่จะวนลูปขณะรัน โปรแกรมจะคัดลอกตัวลูปให้แต่ละรายการ 🔁
คีย์เวิร์ด inline
วาง inline ไว้หน้า for เพื่อขอให้ Zig ขยายลูปขณะคอมไพล์ จำนวนรอบต้องทราบได้ในเวลานั้น
inline for (items) |item| {}การคลี่ลูปหมายถึงการคัดลอกตัวลูป
การคลี่ลูปจะแทนที่ลูปด้วยสำเนาของตัวลูปหนึ่งชุดต่อสมาชิกหนึ่งรายการ เมื่อรันโปรแกรมจะไม่เหลือตัวนับลูป มีเพียงโค้ดที่ทำงานต่อเนื่องเป็นเส้นตรง เท่านั้น
วนดูทูเพิลที่ทราบแน่นอน
การใช้งานทั่วไปคือการไล่ดู ทูเพิล ที่ฟิลด์มีชนิดแตกต่างกัน สำเนาที่ถูกคลี่ออกแต่ละชุดสามารถจัดการสมาชิกของตนด้วยชนิดข้อมูลที่ถูกต้อง
inline for (.{ 1, true, 3.0 }) |v| {}ดัชนีสามารถเป็น comptime ได้
เมื่อใช้ inline for ดัชนีของลูปจะเป็นค่าที่ทราบขณะคอมไพล์ในแต่ละรอบ จึงสามารถใช้ในตำแหน่งที่อนุญาตเฉพาะค่าคงที่ได้
inline for (list, 0..) |v, i| {}แต่ละรอบสามารถแตกต่างกันได้
เนื่องจากตัวลูปถูกทำซ้ำ สำเนาแต่ละชุดจึงสามารถใช้ ชนิดข้อมูล หรือค่าที่แตกต่างกันได้ ลูป for ปกติทำเช่นนี้ไม่ได้
สะท้อนดูฟิลด์ของ struct
จับคู่ inline for เข้ากับการสะท้อนชนิดข้อมูลเพื่อเข้าถึง ฟิลด์ แต่ละรายการของ struct ขณะคอมไพล์ และสร้างโค้ดที่ปรับให้เหมาะกับแต่ละรายการ
inline for (fields) |field| {}แลกขนาดโค้ดกับความเร็ว
การคลี่ลูปช่วยตัดค่าใช้จ่ายของลูปออก แต่ทำให้ไบนารีมีขนาดใหญ่ขึ้น ใช้ inline for กับจำนวนรอบที่น้อยและตายตัว เมื่อ ความเร็วที่เพิ่มขึ้น คุ้มค่า
ต้องทราบจำนวนรอบ
inline for ต้องการความยาวที่คอมไพเลอร์มองเห็นได้ การวนดูสไลซ์ที่มีความยาวไม่ทราบแน่ชัดขณะ รัน จึงไม่สามารถคลี่ลูปได้
ยังมี inline while ด้วย
Zig มี inline while ด้วย โดยจะคลี่ลูป while ขณะคอมไพล์ เมื่อสามารถหาค่าของเงื่อนไขได้ระหว่างการคอมไพล์
ใช้กับจำนวนรอบน้อย ๆ
เลือกใช้ inline for เมื่อจำนวนรายการน้อยและตายตัว สำหรับความยาวมากหรือไม่ทราบแน่ชัด ลูป for ปกติจะช่วยให้ไบนารีมีขนาดเล็ก
ตรวจสอบอย่างรวดเร็ว
การเติม inline ให้ลูป for ขอให้คอมไพเลอร์ Zig ทำอะไร
สรุปทบทวน
inline for จะคลี่ลูปที่มีความยาวทราบแน่นอนขณะคอมไพล์ ทำให้สำเนาแต่ละชุดใช้ชนิดข้อมูลของตนเองได้ และตัดค่าใช้จ่ายของลูปขณะรันออก 🎯
คำถามที่พบบ่อย
บทเรียน “inline for และลูปที่คลี่ออก” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “inline for และลูปที่คลี่ออก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “inline for และลูปที่คลี่ออก”
วนซ้ำในเวลาคอมไพล์ คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “inline for และลูปที่คลี่ออก” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม
ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เวลาคอมไพล์เทียบกับเวลาทำงาน
- พารามิเตอร์และค่าของ comptime
- ชนิดข้อมูลคือค่า comptime
- inline for และลูปที่คลี่ออก