Unions etiquetadas y switch
Haga pattern matching sobre las variantes de una union.
Unions etiquetadas y switch es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
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. 🧩
Preguntas frecuentes
¿La lección «Unions etiquetadas y switch» es gratis?
Sí — el texto completo de «Unions etiquetadas y switch» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Unions etiquetadas y switch»?
Haga pattern matching sobre las variantes de una union. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Zig Academy?
No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Unions etiquetadas y switch»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Zig Academy?
Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Enums para un conjunto fijo de valores
- Unions que contienen uno de varios tipos
- Unions etiquetadas y switch
- Métodos de enums y enteros subyacentes