Таблицы смешанной формы
Часть раздела Введение в 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, необязательные поля и методы.
Задание
ЛегкоОпределите псевдоним типа Player для shape с тремя полями: name: string, score: number и active: boolean.
Создайте local player: Player с именем "Rio", значением score 1500 и установите active в значение true.
Выведите каждое значение в отдельной строке:
- name player
- score player
- флаг active player
- точную строку
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, затем интерполированную строку сводки
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в 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-словариПотренируйтесь самостоятельно: Онлайн-компилятор Lua