Что такое Luau?
Часть раздела Введение в Luau путешествия по Lua на Coddy — урок 1 из 73.
Luau — это язык программирования, созданный в Roblox, который дополняет уже знакомый вам Lua постепенной статической типизацией (gradual static types). Относитесь к нему как к Lua с дополнительным уровнем безопасности и инструментов — он обеспечивает работу миллионов проектов в Roblox и является открытым исходным кодом с 2021 года.
Главная идея заключается в том, что Luau — это надмножество (superset) Lua 5.1. Любой `valid` код на Lua 5.1 также является `valid` кодом на Luau: вы можете взять скрипт, написанный в предыдущих разделах, и запустить его в Luau без изменений.
Что Luau добавляет сверх этого — так это аннотации типов (`annotation`). Аннотация объявляет, какой тип данных должен содержаться в переменной — `string`, `number`, boolean, table — благодаря чему ошибки можно обнаружить еще до запуска кода:
-- Lua (also valid Luau)
local message = "Hello World"
-- Luau with a type annotation
local message: string = "Hello World"Слово постепенная здесь имеет ключевое значение: аннотации необязательны. Вы можете добавить `type` одной переменной, одной функции или целому файлу — код в стиле Lua без типов продолжит работать, пока вы добавляете типы в удобном для вас темпе.
Взамен вы получаете более удобные инструменты в редакторе, более читаемый код и защиту от ошибок, которые обычный Lua обнаруживает только во время выполнения программы.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в 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-словари