Menu
Coddy logo textTech

Структурированные и произвольные таблицы

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

Теперь у вас есть два способа работать с таблицами записей: способ loose, который вы всегда использовали в Lua, и объявленные формы. Стоит остановиться и посмотреть, что даёт каждый из них.

Таблица loose принимает что угодно. У такой гибкости есть цена: опечатавшись в поле (user.nmae), вы молча получаете nil; забыв поле, вы обнаружите ошибку далеко от места её возникновения — во время выполнения, в том коде, который первым обратится к отсутствующему полю:

local user = {name = "Ana", age = 20}
print(user.nmae) -- loose table: silently prints nil

Объявите форму — и эти ошибки переместятся со времени выполнения на этап редактирования. Проверяющий сразу укажет на опечатку, как только вы её допустите, редактор сможет предлагать имена полей при автодополнении, а объявление type одновременно станет документацией о содержимом таблицы:

type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ type error: key 'nmae' not found in User

Если вы переходите с TypeScript, обратите внимание: в Luau нет ключевого слова interface: type описывает любую форму. Здесь также нет «слияния объявлений»: объявление двух типов с одним и тем же именем в одной области видимости является ошибкой, поэтому у каждой формы есть ровно одно определение.

Формы Luau являются структурными: любая таблица с нужными полями правильных типов подходит, независимо от того, где и как она была создана. И у таблиц loose всё ещё есть своё применение: быстрым скриптам и действительно динамическим данным не нужна объявленная форма. Однако для всего, что передаётся между функциями, форма позволяет обнаружить ошибки, пока их ещё дёшево исправить.

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

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

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

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

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