นำเข้าไฟล์ด้วย @import
นำไฟล์ซอร์สอื่นเข้ามาในขอบเขต
นำเข้าไฟล์ด้วย @import เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
นำเข้าไฟล์อื่น
เมื่อโค้ดขยายใหญ่ขึ้น คุณจะแยกโค้ดออกเป็นหลายไฟล์ คำสั่งในตัว @import จะดึงไฟล์ซอร์ส Zig อีกไฟล์เข้ามาในไฟล์ปัจจุบัน 📦
const math = @import("math.zig");ส่งคืนค่า
@import เป็นนิพจน์ที่ส่งคืนค่า คุณเก็บค่านั้นไว้ใน const แล้วเข้าถึงสมาชิกด้วยจุดได้เช่นเดียวกับโครงสร้างข้อมูล
const math = @import("math.zig");
const r = math.add(2, 3);ไฟล์คือโครงสร้างข้อมูล
ไฟล์ Zig ทุกไฟล์แท้จริงแล้วคือ โครงสร้างข้อมูล การประกาศระดับบนสุดจะกลายเป็นฟิลด์และฟังก์ชันที่คุณเข้าถึงได้หลังนำเข้าไฟล์
มีเพียง pub ที่ข้ามขอบเขตได้
การประกาศจะเข้าถึงได้จากไฟล์อื่นก็ต่อเมื่อมีเครื่องหมาย pub หากไม่มี pub การประกาศนั้นจะเป็นส่วนตัวและใช้ได้เฉพาะในไฟล์ของตนเอง
pub fn add(a: i32, b: i32) i32 {
return a + b;
}เส้นทางเป็นแบบสัมพัทธ์
เส้นทางไฟล์ภายใน @import เป็นแบบสัมพัทธ์กับไฟล์ที่นำเข้า ดังนั้น "util/text.zig" จะค้นหาในโฟลเดอร์ util ที่อยู่ข้างไฟล์ปัจจุบัน
const text = @import("util/text.zig");นำเข้าไลบรารีมาตรฐาน
การนำเข้าที่ใช้บ่อยที่สุดคือ std ซึ่งเป็นชื่อโมดูลพิเศษ ไม่ใช่เส้นทางไฟล์ และให้คุณเข้าถึงไลบรารีมาตรฐานทั้งหมด
const std = @import("std");โมดูล builtin
ชื่อพิเศษอีกชื่อหนึ่งคือ builtin ซึ่งเปิดเผยข้อมูลขณะคอมไพล์ เช่น ระบบปฏิบัติการเป้าหมายและโหมดการปรับประสิทธิภาพปัจจุบัน
const builtin = @import("builtin");การนำเข้าทำงานขณะคอมไพล์
@import จะถูกแก้ไขทั้งหมดในเวลาคอมไพล์ เส้นทางต้องเป็นลิเทอรัลสตริงที่ทราบค่าในเวลานั้น และต้องไม่ใช่ค่าที่คำนวณขณะเรียกใช้
แคชไว้ ไม่ทำซ้ำ
แม้นำเข้าไฟล์เดียวกันจากสิบตำแหน่ง Zig ก็จะโหลดไฟล์นั้นครั้งเดียว การนำเข้าทุกครั้งด้วยเส้นทางเดียวกันจะแชร์ค่าโครงสร้างข้อมูลเดียวกันอย่างแท้จริง
เปลี่ยนชื่อให้ชัดเจน
เนื่องจากผลลัพธ์เป็นเพียง const คุณจึงเปลี่ยนชื่อได้อย่างอิสระ เลือกชื่อแทนที่สั้นและชัดเจน ซึ่งอ่านได้ดีในทุกจุดที่เรียกใช้
const fs = @import("std").fs;เข้าถึงโดยไม่ต้องเก็บไว้
คุณสามารถต่อการเข้าถึงจากการนำเข้าได้โดยตรงเพื่อใช้งานครั้งเดียว โดยไม่ต้องมี const คั่นกลางเมื่อคุณต้องการเพียงรายการเดียว
const out = @import("std").io.getStdOut();ตรวจสอบอย่างรวดเร็ว
ทบทวนว่าอะไรทำให้รายการระดับบนสุดใช้งานได้จากไฟล์อื่น
สรุปทบทวน
คุณได้เรียนรู้ว่า @import โหลดไฟล์เป็นโครงสร้างข้อมูลขณะคอมไพล์ std และ builtin เป็นชื่อพิเศษ และมีเพียงรายการที่เป็น pub เท่านั้นที่ข้ามไปยังไฟล์อื่นได้ 🎯
เรียนรู้ Zig ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “นำเข้าไฟล์ด้วย @import” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “นำเข้าไฟล์ด้วย @import” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “นำเข้าไฟล์ด้วย @import”
นำไฟล์ซอร์สอื่นเข้ามาในขอบเขต คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “นำเข้าไฟล์ด้วย @import” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม
ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นำเข้าไฟล์ด้วย @import
- การจัดโครงสร้างโครงการหลายไฟล์
- build.zig.zon และตัวจัดการแพ็กเกจ
- การเพิ่มโมดูลจากผู้พัฒนาภายนอก