Типизированные массивы
Часть раздела Введение в Luau путешествия по Lua на Coddy — урок 13 из 73.
Typed arrays — одна из самых полезных возможностей Luau для организации нескольких значений с сохранением типобезопасности.
В Lua массив — это просто table со значениями на позициях 1, 2, 3, …, и он с радостью будет одновременно хранить number, string и boolean. Luau позволяет объявить, что table должен содержать элементы только одного типа, используя синтаксис {Type}:
local numbers: {number} = {1, 2, 3, 4, 5}
local names: {string} = {"Alice", "Bob", "Charlie"}
local flags: {boolean} = {true, false, true}Когда вы объявляете typed array, средство проверки типов Luau отслеживает, чтобы в него попадали только values объявленного типа. Вставьте string в массив {number}, и вы получите type error еще при редактировании — до того, как код вообще запустится:
local scores: {number} = {85, 90, 78}
table.insert(scores, "oops") -- ✗ ошибка типа: string не является numberВсё, что вы уже знаете о Lua tables, по-прежнему применимо: arrays индексируются с 1 (based на 1: scores[1] — это first элемент), #scores — это длина, а table.insert / table.remove работают как обычно. Аннотация добавляет безопасность, а не новое поведение во время выполнения.
Задание
ЛегкоСоздайте типизированный массив с именем scores, который может содержать только числа, инициализированный значениями 85, 92 и 78.
Создайте второй типизированный массив с именем studentNames, который может содержать только строки, инициализированный значениями "Alice", "Bob" и "Charlie".
Затем выведите, каждое на отдельной строке:
- первую оценку
- количество оценок (используйте
#) - второе имя студента
Попробуйте сами
-- Напишите код здесь
-- 1) объявите scores: {number} и studentNames: {string}
-- 2) выведите первый score, количество scores и второе name
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в 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-словари