0Pricing
Zig Academy · บทเรียน

การตรวจสอบฟิลด์ด้วย @typeInfo

ตรวจสอบโครงสร้างของชนิดข้อมูลขณะคอมไพล์

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

ดูภายในชนิดใดก็ได้

Zig อนุญาตให้โค้ดตรวจสอบชนิดของตัวเองขณะคอมไพล์ บิวท์อิน @typeInfo จะมอบโครงสร้างทั้งหมดของชนิดนั้นในรูปข้อมูลให้คุณ 🔎

ส่งคืนค่า Type.Info

@typeInfo รับชนิดหนึ่งชนิดและส่งคืนค่า std.builtin.Type ค่านั้นเป็น tagged union ที่อธิบายอย่างชัดเจนว่าชนิดที่คุณส่งเข้าไปเป็นชนิดใด

const info = @typeInfo(u32);

แท็กบอกว่าเป็นชนิดใด

แท็กของ union จะบอกหมวดหมู่ เช่น struct จำนวนเต็ม หรือตัวชี้ เป็นต้น คุณใช้ switch กับแท็กนี้เพื่อจัดการกับ ชนิดแต่ละแบบ

switch (@typeInfo(T)) {
    .Struct => {},
    else => {},
}

เข้าถึงข้อมูลของ Struct

เมื่อชนิดนั้นเป็น struct ตัวแปร .Struct จะเก็บข้อมูลที่อธิบายฟิลด์ การประกาศ และรูปแบบการจัดวาง

const s = @typeInfo(Point).Struct;

ฟิลด์อยู่ในอาร์เรย์

ข้อมูลของ struct มีอาร์เรย์ fields แต่ละรายการคือ StructField ซึ่งเก็บชื่อ ชนิด และรายละเอียดอื่น ๆ ของฟิลด์หนึ่งฟิลด์

const fields = @typeInfo(Point).Struct.fields;

อ่านชื่อและชนิดของฟิลด์

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

const f = @typeInfo(Point).Struct.fields[0];
const n = f.name;

วนดูฟิลด์ด้วย inline for

เนื่องจากรายการฟิลด์เป็น comptime คุณจึงวนดูได้ด้วย inline for ลูปจะถูกคลี่ออก ทำให้แต่ละฟิลด์มีโค้ดที่เป็นรูปธรรมของตัวเอง

inline for (@typeInfo(T).Struct.fields) |field| {
    _ = field.name;
}

ตรวจสอบชนิดจำนวนเต็มด้วย

สำหรับจำนวนเต็ม ตัวแปร .Int จะแสดงว่าเป็น signed หรือ unsigned และมีความกว้างกี่บิต คุณจึงปรับตรรกะให้เหมาะกับชนิดตัวเลขที่แน่นอนได้

const i = @typeInfo(i16).Int;
const bits = i.bits;

Enum เปิดเผยสมาชิกของมัน

ตัวแปร .Enum จะแสดงฟิลด์ enum ทุกตัวพร้อมชื่อและค่าจำนวนเต็ม ทำให้คุณสร้างโค้ดแยกตามแต่ละตัวเลือกได้

const e = @typeInfo(Color).Enum;
const fields = e.fields;

ตัวชี้เปิดเผยชนิดเป้าหมาย

สำหรับตัวชี้ ตัวแปร .Pointer จะบอกชนิด child ขนาด ชนิดของขนาด และบอกว่าเป็น const หรือไม่ คุณจึงแกะชั้นต่าง ๆ ออกได้

const p = @typeInfo(*u8).Pointer;
const child = p.child;

สิ่งนี้ขับเคลื่อนไลบรารีจริง

การสะท้อนข้อมูลขับเคลื่อนโค้ด JSON และการจัดรูปแบบของ Zig เอง โดยโค้ดเหล่านั้นอ่านฟิลด์ด้วย @typeInfo และจัดการกับ struct ใด ๆ ที่คุณส่งให้ ✨

ตรวจสอบอย่างรวดเร็ว

คุณต้องการรายการฟิลด์ของ struct ขณะคอมไพล์ นิพจน์ใดจะให้รายการนั้นแก่คุณ

ทบทวน

@typeInfo เปลี่ยนชนิดให้เป็นข้อมูล: ใช้ switch กับแท็กของมัน จากนั้นอ่านฟิลด์ บิต หรือสมาชิก แล้ววนดูด้วย inline for 🎯

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

บทเรียน “การตรวจสอบฟิลด์ด้วย @typeInfo” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบฟิลด์ด้วย @typeInfo”

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

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

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

บทเรียน “การตรวจสอบฟิลด์ด้วย @typeInfo” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การตรวจสอบฟิลด์ด้วย @typeInfo
  2. การสร้างชนิดข้อมูลด้วย @Type
  3. การตรวจสอบขณะคอมไพล์และ @compileError
  4. การสร้างโค้ดด้วย comptime
← กลับไปที่ Zig Academy