Анонимные структуры и кортежи
Создавайте сгруппированные значения на месте.
«Анонимные структуры и кортежи» — бесплатный урок Zig Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.
Иногда это нужно только один раз
Не для каждой группы нужен именованный тип. Zig позволяет записать анонимную структуру прямо в месте использования.
Просто не указывайте имя
Литерал анонимной структуры начинается с .{ и перечисляет поля по именам — перед ним тип не указывается.
const p = .{ .x = 1, .y = 2 };Используйте поля обычным образом
Поля читаются так же, как у именованной структуры, — через точку. Здесь p.x равно 1, а p.y — 2.
const sum = p.x + p.y;Приведение к именованному типу
Анонимный литерал можно неявно преобразовать в именованную структуру, если целевой тип известен, например для возвращаемого значения.
fn make() Point {
return .{ .x = 0, .y = 0 };
}У кортежей нет имён полей
Если не указывать имена полей, получится кортеж — анонимная структура, поля которой доступны по позиции.
const pair = .{ 1, 2 };Индексация кортежа
Обратитесь к полю кортежа по номеру, записанному подобно имени поля. Поэтому pair[0] равно 1, а pair[1] — 2.
const first = pair[0];Разные типы допустимы
Поля кортежа могут иметь разные типы. Один литерал может одновременно содержать целое число, логическое значение и строку.
const row = .{ 42, true, "hi" };У кортежей есть длина
Кортеж всё ещё является структурой, поэтому у него есть известная во время компиляции величина len, которую можно прочитать с помощью tuple.len.
const n = row.len; // 3Отлично подходит для аргументов print
std.debug.print принимает кортеж значений для форматирования. Передаваемый вами .{} — это анонимный кортеж.
std.debug.print("{} {}\n", .{ 1, 2 });Перебор кортежа
Поскольку длина известна во время компиляции, поля кортежа можно перебрать с помощью цикла inline for.
inline for (row) |field| {
_ = field;
}Именованные или позиционные
Выбирайте анонимную структуру, когда имена делают код понятнее, а кортеж — когда достаточно короткой упорядоченной группы.
Быстрая проверка
Чем кортеж отличается от именованной анонимной структуры?
Итоги
Вы познакомились с анонимными структурами и кортежами: .{ .x = 1 } — это встроенная структура с именем поля, а .{ 1, 2 } — позиционный кортеж. 📦
Часто задаваемые вопросы
Урок «Анонимные структуры и кортежи» бесплатный?
Да — полный текст урока «Анонимные структуры и кортежи» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.
Все уроки этого курса
- Объявление структур и полей
- Методы и параметр self
- Значения полей по умолчанию
- Анонимные структуры и кортежи