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

ยูเนียนที่เก็บหนึ่งชนิดจากหลายชนิด

เก็บรูปแบบทางเลือกไว้ในช่องเดียว

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

หนึ่งช่อง หลายรูปแบบ

บางครั้งค่าอาจเป็นจำนวนเต็มหรือจำนวนทศนิยมก็ได้ แต่เป็นได้เพียงชนิดเดียวในแต่ละครั้ง union จะเก็บหนึ่งชนิดจากหลายชนิดที่เป็นไปได้ไว้ในช่องเดียว

การประกาศ Union

คุณเขียน union แล้วระบุฟิลด์ที่มีชื่อ โดยแต่ละฟิลด์มีชนิดของตนเอง ค่าจะเก็บฟิลด์ใดฟิลด์หนึ่งเท่านั้นในแต่ละขณะ

const Number = union { int: i64, float: f64 };

เก็บฟิลด์ได้ครั้งละหนึ่งฟิลด์

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

การกำหนดฟิลด์ที่ใช้งานอยู่

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

var n = Number{ .int = 42 };

การอ่านฟิลด์ที่ใช้งานอยู่

คุณอ่านค่ายูเนียนผ่านฟิลด์ที่กำหนดไว้ เข้าถึง n.int แล้วคุณจะได้จำนวนเต็มที่จัดเก็บไว้ เช่นเดียวกับการเข้าถึงฟิลด์ใน โครงสร้าง

const x = n.int;

ใช้หน่วยความจำร่วมกัน

ยูเนียนจะจองพื้นที่เท่ากับฟิลด์ที่ใหญ่ที่สุด แล้วนำพื้นที่นั้นกลับมาใช้ร่วมกัน จึงเป็นวิธีขนาดกะทัดรัดในการเก็บ รูปแบบ ใดรูปแบบหนึ่งจากหลายรูปแบบ

การเปลี่ยนฟิลด์ที่ใช้งานอยู่

การกำหนดฟิลด์ใหม่จะทำให้ฟิลด์นั้นกลายเป็นฟิลด์ที่ใช้งานอยู่ และค่าเดิมจะหายไป ตอนนี้ยูเนียนจะแทน รูปร่าง ที่แตกต่างออกไป

n = Number{ .float = 3.14 };

การอ่านฟิลด์ที่ไม่ถูกต้อง

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

const f = n.int; // wrong field active

ยูเนียนเปล่าไม่มีแท็ก

ยูเนียนธรรมดาจะไม่จดจำว่าฟิลด์ใดกำลังใช้งานอยู่ คุณต้องติดตามด้วยตนเอง ซึ่งเป็นปัญหาที่ยูเนียนแบบ มีแท็กช่วยแก้

ยูเนียนเทียบกับโครงสร้าง

โครงสร้างคือ AND เชิงตรรกะของฟิลด์ต่าง ๆ ซึ่งมีอยู่พร้อมกันทั้งหมด ส่วนยูเนียนคือ OR เชิงตรรกะ โดยมีฟิลด์เพียง หนึ่งฟิลด์อยู่ในแต่ละครั้ง

ควรใช้ยูเนียนเมื่อใด

ใช้ยูเนียนเมื่อค่าโดยธรรมชาติสามารถอยู่ในรูปแบบใดรูปแบบหนึ่งจากไม่กี่รูปแบบ เช่น โทเค็นที่เป็นตัวเลขหรือสัญลักษณ์ แต่ไม่ใช่ทั้งสองอย่างใน เวลาเดียวกัน

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

ฟิลด์ของยูเนียนกี่ฟิลด์ที่เก็บค่าได้ในเวลาเดียวกัน

สรุป

คุณได้เรียนรู้เรื่อง ยูเนียน: ช่องเดียวที่เก็บฟิลด์หนึ่งฟิลด์จากตัวเลือกหลายแบบที่มีชนิดข้อมูลต่างกัน ยูเนียนใช้หน่วยความจำร่วมกัน ดังนั้นควรกำหนดและอ่านเฉพาะฟิลด์ที่ใช้งานอยู่เท่านั้น 🔀

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

บทเรียน “ยูเนียนที่เก็บหนึ่งชนิดจากหลายชนิด” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ยูเนียนที่เก็บหนึ่งชนิดจากหลายชนิด”

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

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

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

บทเรียน “ยูเนียนที่เก็บหนึ่งชนิดจากหลายชนิด” ใช้เวลานานแค่ไหน

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

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

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

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

  1. อีนัมสำหรับชุดค่าที่กำหนดตายตัว
  2. ยูเนียนที่เก็บหนึ่งชนิดจากหลายชนิด
  3. ยูเนียนติดป้ายกำกับและ switch
  4. เมธอดของอีนัมและจำนวนเต็มตัวแทน
← กลับไปที่ Zig Academy