Union Bertanda dan switch
Lakukan pencocokan pola pada varian union.
Union Bertanda dan switch adalah pelajaran Zig Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Zig Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Zig Academy mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Remembering the Variant
A plain union forgets which field is active. A tagged union pairs the value with an enum tag that records the current variant.
Declaring a Tagged Union
You write union(enum) to let Zig generate a matching tag automatically, one tag name per field.
const Value = union(enum) { int: i64, text: []const u8 };The Tag Tracks the Field
Now the value carries its own tag, like .int or .text. The union always knows which variant it currently holds.
var v = Value{ .int = 7 };Switch over the Variants
Use switch on a tagged union to branch by variant. Each case names one tag and handles that shape of the value.
switch (v) { .int => {}, .text => {} }Capture the Payload
Add a capture with vertical bars to pull out the inner value of the active field, ready to use inside that branch.
switch (v) { .int => |n| useInt(n), .text => |s| useText(s) }Exhaustiveness Is Enforced
Zig requires every variant to be handled. Forget a case and the compiler stops you, so you never silently miss one.
The else Branch
When you want to handle the rest in one place, add an else branch to cover any variants you did not list explicitly.
switch (v) { .int => |n| useInt(n), else => {} }switch Is an Expression
A switch can produce a value, so each branch returns something. You assign the whole switch to a variable in one step.
const kind = switch (v) { .int => 1, .text => 2 };Mutate Through a Capture
Capture by pointer with |*field| when you want to change the payload in place rather than copy it out of the union.
switch (v) { .int => |*n| n.* += 1, else => {} }A Type-Safe Sum Type
Tagged unions are Zig's safe sum types: one value, many shapes, and a switch that the compiler proves you handled completely.
Perfect for Parsers and States
This pattern fits tokens, AST nodes, and state machines beautifully: model each case once and let switch route the logic.
Quick Check
What does writing union(enum) give you over a plain union?
Recap
You met tagged unions: union(enum) tracks the active variant. Switch over it, capture payloads with bars, and the compiler enforces every case. 🧩
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Union Bertanda dan switch” gratis?
Ya — teks lengkap “Union Bertanda dan switch” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Zig Academy, upgrade ke CoddyKit PRO. Kursus Zig Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Union Bertanda dan switch”?
Lakukan pencocokan pola pada varian union. Kamu berlatih Zig Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Zig Academy?
Tidak diperlukan pengalaman sebelumnya. Zig Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Union Bertanda dan switch” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Zig Academy ini?
Ya. Setiap pelajaran Zig Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Enum untuk Sekumpulan Nilai Tetap
- Union yang Menyimpan Salah Satu dari Banyak Tipe
- Union Bertanda dan switch
- Method Enum dan Bilangan Bulat Dasar