Menu
CoddyTech

Типизация анонимных функций

Часть раздела Введение в 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, а проверяющая система сверяет каждый вызов с указанными вами аннотациями.

challenge icon

Задание

Легко

Сохраняй типизированные функции в локальных переменных.

  1. Перепиши subtract как local subtract = function(a: number, b: number): number, сохранив её тело.
  2. Добавь local isPositive = function(num: number): boolean, которая возвращает num > 0.
  3. Выведи subtract(10, 3) и isPositive(-5).

Нажми «Запустить код»: в выводе появятся 7 и false.

Попробуйте сами

-- Перепишите это как анонимную функцию, сохранённую в переменной, объявленной с помощью local
function subtract(a: number, b: number): number
    return a - b
end

Все уроки раздела Введение в Luau

Потренируйтесь самостоятельно: Онлайн-компилятор Luau