Типизация анонимных функций
Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 24 из 80.
В Lua функции являются значениями: вы сохраняли их в переменных и передавали их: local f = function(x) return x * 2 end. У этих анонимных функций (функциональных выражений) аннотации типов задаются точно так же, как у именованных функций:
local double = function(x: number): number
return x * 2
end
local shout = function(text: string): string
return string.upper(text) .. "!"
endПараметры записываются внутри скобок в виде name: type, а тип возвращаемого значения указывается после закрывающей скобки: единственное отличие от именованной функции состоит в том, что у ключевого слова function нет имени, а всё выражение присваивается переменной.
Если вы знакомы с JavaScript или TypeScript, учтите, что в Luau нет стрелочных функций. Синтаксиса => не существует. Каждое функциональное выражение записывается с помощью function ... end, будь оно длинным или коротким.
После присваивания вы вызываете функцию через переменную, как любую другую функцию: double(21) возвращает 42, а проверяющая система сверяет каждый вызов с указанными вами аннотациями.
Задание
ЛегкоСохраняй типизированные функции в локальных переменных.
- Перепиши
subtractкакlocal subtract = function(a: number, b: number): number, сохранив её тело. - Добавь
local isPositive = function(num: number): boolean, которая возвращаетnum > 0. - Выведи
subtract(10, 3)иisPositive(-5).
Нажми «Запустить код»: в выводе появятся 7 и false.
Попробуйте сами
-- Перепишите это как анонимную функцию, сохранённую в переменной, объявленной с помощью local
function subtract(a: number, b: number): number
return a - b
end
Все уроки раздела Введение в Luau
1Начало работы с Luau
Что такое Luau?Почему именно Luau?Ваш первый код на LuauПроверка типов и режимы ошибокИтоги: Введение в Luau4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация анонимных функцийФункции без возвращаемого значенияНеобязательные параметрыЗначения параметров по умолчаниюЗначения по умолчанию для булевых параметровФункции с переменным числом аргументовОпределение типов функцийПовторение: типизированные функции2Основные типы
Число, строка и булево значениеТип 'any': запасной выходТип 'unknown'Nil и опциональные типыВывод типов на практикеЯвные аннотации типовПовторение: практика с основными типами5Псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения (Union)Работа с типами объединенияЛитеральные типыТипы пересечения (Intersection)Комбинирование псевдонимов типовИтоги: Сложные комбинации типов3Типизированные таблицы: массивы и отображения
Типизированные массивыДобавление и чтение элементовЧто такое тип отображения?Объявление и доступ к отображениямПеребор таблицТаблицы смешанной структурыЧтение сеткиСоздание сеткиtable.unpackПовторение: массивы и отображенияПотренируйтесь самостоятельно: Онлайн-компилятор Luau