0Pricing
Zig Academy · Урок

Помеченные объединения и switch

Сопоставляйте варианты объединения с шаблонами.

«Помеченные объединения и switch» — бесплатный урок Zig Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

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. 🧩

Часто задаваемые вопросы

Урок «Помеченные объединения и switch» бесплатный?

Да — полный текст урока «Помеченные объединения и switch» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.

Чему я научусь в уроке «Помеченные объединения и switch»?

Сопоставляйте варианты объединения с шаблонами. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Zig Academy?

Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Помеченные объединения и switch»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Zig Academy?

Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Перечисления для фиксированного набора значений
  2. Объединения, содержащие один из нескольких типов
  3. Помеченные объединения и switch
  4. Методы перечислений и целые числа-основы
← Назад к Zig Academy