ประกาศชนิดออปชัน
เพิ่ม ? เพื่ออนุญาตให้ไม่มีค่า
ประกาศชนิดออปชัน เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
บางครั้งก็ไม่มีค่า
โปรแกรมจริงมักพบกรณีที่ค่าไม่มีอยู่จริง เช่น การค้นหาไม่พบข้อมูล หรือฟิลด์ว่างเปล่า Zig จำลอง การไม่มีค่า อย่างปลอดภัยและโดยตั้งใจ
ชนิด Optional
ชนิด optional สามารถเก็บค่าจริงของชนิดใดชนิดหนึ่ง หรือค่าพิเศษ null ซึ่งหมายความว่าไม่มีอะไรอยู่
เติมเครื่องหมายคำถามนำหน้า
คุณทำให้ชนิดใด ๆ เป็น optional ได้โดยเขียน ? ไว้ข้างหน้า ดังนั้น ?i32 คือจำนวนเต็มที่อาจเป็น null ได้
var age: ?i32 = null;ค่าปกติก็ใส่ได้
optional สามารถเก็บค่าปกติได้เช่นกัน คุณกำหนดค่า 42 ให้กับ ?i32 ได้เช่นเดียวกับการกำหนดให้กับ i32 ปกติ
var age: ?i32 = 42;null คือสถานะว่าง
คีย์เวิร์ด null คือตัวอักษรที่หมายถึงไม่มีค่า มีเฉพาะชนิด optional เท่านั้นที่เก็บค่านี้ได้
const missing: ?u8 = null;ชนิดที่ไม่ใช่ Optional ปฏิเสธ null
i32 ปกติไม่สามารถเป็น null ได้เลย คอมไพเลอร์จะหยุดคุณไว้ เพื่อให้การไม่มีค่ายังคงมองเห็นได้ใน ชนิด แทนที่จะซ่อนอยู่ในรูปค่าที่ไม่ถูกต้อง
var n: i32 = null; // error: expected i32ห่อหุ้มชนิดใดก็ได้
Optional ไม่ได้มีไว้สำหรับตัวเลขเท่านั้น คุณสามารถทำให้ bool, โครงสร้าง, slice หรือชนิดใด ๆ เป็น optional ได้ด้วยการเติมเครื่องหมายคำถาม
var found: ?bool = null;การอนุมานชนิดยังทำงานได้
เมื่อกำหนดค่า optional แล้ว Zig จะ อนุมาน ชนิด optional ให้คุณ ดังนั้นคุณไม่จำเป็นต้องเขียนชนิดนั้นด้วยตนเองทุกครั้ง
const score: ?u32 = 10;ทำไมไม่ใช้ค่าพิเศษแทน
ในภาษา C ผู้คนมักจำลองการไม่มีค่าด้วยค่าอย่าง -1 หรือพอยน์เตอร์ null แต่ Zig มอบ optional ที่แท้จริงให้ จึงไม่อาจสับสนระหว่างการไม่มีค่ากับข้อมูลได้
การไม่มีค่าเป็นส่วนหนึ่งของชนิด
เนื่องจาก ? อยู่ในชนิดโดยตรง ทุกคนที่อ่านโค้ดจะเห็นทันทีว่าค่าอาจ ไม่มีอยู่ และต้องจัดการกับกรณีนี้
กำหนดค่าเริ่มต้นเป็น null
โดยทั่วไปจะเริ่มต้น optional ด้วย null แล้วค่อยเติมค่าภายหลังเมื่อมีค่าที่ต้องการจัดเก็บจริง ๆ
var result: ?[]const u8 = null;ตรวจสอบอย่างรวดเร็ว
คุณประกาศ u32 ที่อาจไม่มีค่าได้อย่างไร
สรุป
คุณได้รู้จัก optionals: เขียน ? ไว้หน้าชนิดเพื่อให้เก็บค่าจริงหรือ null ได้ ตอนนี้การไม่มีค่าอยู่ในชนิดอย่างชัดเจนและมองเห็นได้ ❓
คำถามที่พบบ่อย
บทเรียน “ประกาศชนิดออปชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ประกาศชนิดออปชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ประกาศชนิดออปชัน”
เพิ่ม ? เพื่ออนุญาตให้ไม่มีค่า คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ประกาศชนิดออปชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม
ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ประกาศชนิดออปชัน
- แกะค่าอย่างปลอดภัยด้วย if และ orelse
- พอยน์เตอร์แบบออปชันและ ?*T
- null เทียบกับ undefined