Почему именно Luau?
Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 2 из 73.
Система типов Luau предлагает три основных преимущества, которые делают разработку безопаснее и эффективнее.
Раннее обнаружение ошибок: проверка типов анализирует ваш код во время редактирования, до его запуска. Рассмотрим классическую ошибку Lua: передача nil там, где ожидается число:
-- Lua: nothing warns you about this
local function calculateTotal(price, tax)
return price + tax
end
print(calculateTotal(nil, 0.1))
-- ✗ runtime error: attempt to perform arithmetic on nilВ обычном Lua сбой происходит только тогда, когда ошибочный вызов наконец выполняется: возможно, уже перед вашими пользователями. Хуже того, Lua иногда полностью скрывает ошибку: "50" + 0.1 молча преобразует строку и возвращает 50.1… пока однажды строка не окажется нечисловой. С аннотациями Luau ошибка отмечается немедленно:
local function calculateTotal(price: number, tax: number): number
return price + tax
end
calculateTotal(nil, 0.1) -- ✗ type error while editing: nil is not a numberЛучшая читаемость кода: аннотации служат документацией. price: number точно сообщает вам и вашим коллегам, что ожидает и возвращает function: не нужно гадать или разбираться в реализации.
Улучшенные инструменты разработки: поскольку редактор знает тип каждой переменной, вы получаете точное автодополнение, более безопасный рефакторинг и более интеллектуальную навигацию. Введите точку после типизированного значения, и редактор перечислит всё, что доступно.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в 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