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

ประกาศชนิดออปชัน

เพิ่ม ? เพื่ออนุญาตให้ไม่มีค่า

ประกาศชนิดออปชัน เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. ประกาศชนิดออปชัน
  2. แกะค่าอย่างปลอดภัยด้วย if และ orelse
  3. พอยน์เตอร์แบบออปชันและ ?*T
  4. null เทียบกับ undefined
← กลับไปที่ Zig Academy