Menu
Coddy logo textTech

Таблицы смешанной формы

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

Массивы хранят множество значений одного типа; отображения хранят один тип ключей и один тип значений. Но ваши наиболее распространённые таблицы Lua смешивают типы в именованных полях: игрок со строковым именем, числовым счётом и логическим флагом. Luau описывает их с помощью shape: типа таблицы, в котором перечислены каждое поле и его собственный тип.

type Point = {x: number, y: number}

local origin: Point = {x = 0, y = 0}
print(origin.x)

Ключевое слово type создаёт псевдоним типа: повторно используемое имя для shape. Оно существует только для средства проверки: значение времени выполнения с именем Point не создаётся. Каждое поле может иметь свой тип:

type Player = {name: string, score: number, active: boolean}

local player: Player = {name = "Rio", score = 1500, active = true}
print(`{player.name} has {player.score} points`)

После объявления shape средство проверки знает, что player.score — это число, и заранее выявляет ошибки: опечатку вроде player.scroe (такого поля нет) или присваивание player.score = "high" (неверный тип). Это только первое знакомство: в следующей главе гораздо подробнее рассматриваются shape, необязательные поля и методы.

challenge icon

Задание

Легко

Определите псевдоним типа Player для shape с тремя полями: name: string, score: number и active: boolean.

Создайте local player: Player с именем "Rio", значением score 1500 и установите active в значение true.

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

  1. name player
  2. score player
  3. флаг active player
  4. точную строку Rio has 1500 points, созданную с помощью интерполяции строк из полей

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

-- Напишите код здесь
-- 1) type Player = {name: string, score: number, active: boolean}
-- 2) создайте player: Player = {name = "Rio", score = 1500, active = true}
-- 3) выведите name, score, active, затем интерполированную строку сводки
quiz iconПроверьте себя

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

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

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