Таблицы смешанной формы
Часть раздела Введение в 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" (неправильный тип). Это лишь первое знакомство — в отдельной главе мы подробнее разберем формы, необязательные поля и методы.
Задание
ЛегкоОпределите псевдоним типа Player для shape с тремя полями: name: string, score: number и active: boolean.
Создайте local player: Player с именем "Rio", значением score равным 1500 и полем active, установленным в true.
Выведите на экран, каждое на отдельной строке:
- имя игрока
- счет игрока
- флаг активности игрока
- точную строку
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, затем интерполированную сводную строку
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в Luau
1Начало работы с Luau
Что такое Luau?Почему именно Luau?Ваш первый код на LuauПроверка типов и режимы ошибокИтоги: Введение в Luau4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация анонимных функцийФункции, ничего не возвращающиеНеобязательные параметрыЗначения параметров по умолчаниюФункции с переменным числом аргументовОпределение типов функцийИтоги: типизированные функции2Базовые типы
Основные типы: num, str, boolТип 'any': лазейка в типизацииТип 'unknown'Nil и опциональные типыВывод типов на практикеЯвные аннотации типовИтоги: практика по базовым типам5Псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения (Union)Работа с типами объединенияЛитеральные типыТипы пересечения (Intersection)Комбинирование псевдонимов типовИтоги: Сложные комбинации типов3Типизированные таблицы: Массивы и Map-словари
Типизированные массивыДобавление и чтение элементовЧто такое тип Map?Объявление и доступ к Map-словарямИтерация по таблицамТаблицы смешанной формыМногомерные типизированные массивыtable.unpack и VarargsИтоги: Массивы и Map-словари