Методы перечислений и целые числа-основы
Добавляйте поведение и управляйте представлением.
«Методы перечислений и целые числа-основы» — бесплатный урок Zig Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Enums Can Have Behavior
An enum is a real type, so it can hold methods. You declare functions inside the enum body, right next to the value names.
A Method on an Enum
Write a function inside the enum and take self as the first parameter. It works just like a method on a struct.
const Color = enum { red, green, fn isRed(self: Color) bool { return self == .red; } };Calling Enum Methods
You call a method with dot syntax on a value. The value becomes self, so the method knows which variant it was called on.
const ok = c.isRed();Every Enum Has Integer Backing
Under the hood, each enum value maps to an integer. Zig picks a small backing integer type that fits all your values.
Default Numbering Starts at Zero
By default the first value is 0 and each later value counts up by one. So red is 0, green is 1, and so on by order.
const Color = enum { red, green, blue }; // 0, 1, 2Choosing the Backing Type
You can name the backing integer in parentheses, like enum(u8). This pins the exact width and matters for layout and interop.
const Code = enum(u8) { a, b, c };Setting Explicit Values
Assign a specific number to a value with =. This is handy when the integers must match a protocol or hardware register.
const Status = enum(u8) { ok = 0, busy = 1, err = 255 };Enum to Integer
Turn an enum value into its number with @intFromEnum. This gives you the underlying integer to send or store.
const n = @intFromEnum(Status.err); // 255Integer to Enum
Go the other way with @enumFromInt to convert a number back into an enum value of the type you expect.
const s: Status = @enumFromInt(1);Convert with Care
@enumFromInt assumes the number is a valid variant. In safe builds a bad value is caught; otherwise it is your job to validate.
Methods Plus Tags Together
Combine both ideas: pick a backing type for layout, set values for a protocol, and add methods so the enum stays self-contained.
Quick Check
You have a Status enum value and need its underlying number. Which builtin?
Recap
You gave enums methods with self, chose a backing integer like enum(u8), set explicit values, and converted both ways with @intFromEnum and @enumFromInt. 🔢
Часто задаваемые вопросы
Урок «Методы перечислений и целые числа-основы» бесплатный?
Да — полный текст урока «Методы перечислений и целые числа-основы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.
Чему я научусь в уроке «Методы перечислений и целые числа-основы»?
Добавляйте поведение и управляйте представлением. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Zig Academy?
Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Методы перечислений и целые числа-основы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Zig Academy?
Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Перечисления для фиксированного набора значений
- Объединения, содержащие один из нескольких типов
- Помеченные объединения и switch
- Методы перечислений и целые числа-основы