Menu
Coddy logo textTech

Встроенные аннотации структур

Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 37 из 73.

В Lua вы уже давно используете таблицы как записи: local user = {name = "Ana", age = 20}. Ничто не мешает вам допустить опечатку в имени поля, забыть поле или сохранить string там, где должен быть number. Вы узнаете об этом только при запуске кода.

Luau позволяет описать shape такой таблицы прямо в объявлении, перечислив каждое поле и его тип между фигурными скобками:

local user: {name: string, age: number} = {
    name = "Ana",
    age = 20,
}

Сравните это с уже знакомыми вам типами таблиц: {number} описывает массив, а {[string]: number} описывает отображение с любыми строковыми ключами. shape является более точным описанием. В нём каждое поле указывается отдельно и для каждого поля задаётся собственный тип.

После объявления shape проверяющий типов проверяет таблицу на соответствие ему во время редактирования. Отсутствующее поле или неверный тип значения отмечается ещё до запуска кода:

local user: {name: string, age: number} = {
    name = "Ana",
    age = "twenty", -- ✗ ошибка типа: string is not a number
}

Как всегда, аннотация не добавляет поведения во время выполнения: таблица остаётся обычной таблицей Lua. Встроенные shape идеально подходят для одноразовых структур, которые вы не планируете повторно использовать; в следующем уроке вы дадите shape имя.

challenge icon

Задание

Легко

Создай переменную с именем student с аннотацией формы inline, объявляющей:

  • name типа string
  • studentId типа number
  • isEnrolled типа boolean

Инициализируй её значением имени "Sarah Johnson", studentId 12345 и isEnrolled true.

Создай вторую переменную с именем course с аннотацией формы inline, объявляющей:

  • title типа string
  • credits типа number
  • instructor типа string

Инициализируй её значением title "Introduction to Luau", credits 3 и instructor "Dr. Smith".

Выведи, каждое значение на отдельной строке:

  1. имя студента
  2. ID студента
  3. название курса
  4. количество кредитов

Попробуйте сами

-- Напишите код здесь
-- 1) объявите student с inline shape annotation
-- 2) объявите course с inline shape annotation
-- 3) выведите четыре запрошенных поля
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Введение в Luau

Потренируйтесь самостоятельно: Онлайн-компилятор Lua