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 создает псевдоним типа (type alias) — переиспользуемое имя для формы. Он существует только для средства проверки: во время выполнения значение с именем 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`)

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

challenge icon

Задание

Легко

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

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

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

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

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

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

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

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