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} описывает словарь с любыми ключами типа string. shape более точен — он именует каждое поле индивидуально и задаёт каждому полю свой собственный тип.

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

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

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

challenge icon

Задание

Легко

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

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

Инициализируйте её со значениями: name "Sarah Johnson", studentId 12345 и isEnrolled true.

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

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

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

Выведите на экран (каждое значение с новой строки):

  1. имя студента (student's name)
  2. ID студента (student's ID)
  3. название курса (course title)
  4. количество кредитов (number of credits)

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

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

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

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