Объявление функций и аргументы
Учимся упаковывать код в переиспользуемые функции.
Функция — это именованный блок кода, который можно вызывать много раз с разными данными, чтобы не повторять логику.
Если один и тот же код встречается дважды — пора делать функцию. Функции делают программу короче, понятнее и проще в исправлении.
Объявление функции
local function greet(name)
print("Привет, " .. name .. "!")
end
greet("Алиса")
greet("Боб")Вывод:
Привет, Алиса! Привет, Боб!
Здесь name — параметр (заполнитель), а "Алиса" при вызове — аргумент (конкретное значение).
Возврат значения
Функция может вернуть результат через return:
local function square(x)
return x * x
end
local result = square(5)
print(result)Вывод:
25
Значения по умолчанию
В Lua нет встроенных значений по умолчанию, но их легко эмулировать через or:
local function attack(damage)
damage = damage or 10 -- если не передали, берём 10
print("Урон:", damage)
end
attack(25)
attack()Вывод:
Урон: 25 Урон: 10
Когда аргумент не передан, параметр равен nil, и or подставляет запасное значение.
Функции — это значения
В Lua функция — обычное значение, как число или строка. Её можно положить в переменную или таблицу:
local actions = {}
actions.jump = function() print("прыжок") end
actions.run = function() print("бег") end
actions.jump()
actions.run()Вывод:
прыжок бег
Как работает под капотом
Запись local function f() end — это сокращение для local f = function() end. Функция в Lua — это объект первого класса: её можно передавать в другие функции, возвращать и хранить в таблицах. Именно на этом строятся обработчики событий в Roblox: вы передаёте функцию, которая сработает при клике.
Частые ошибки
- Забыть
endв конце функции. - Не вернуть значение через
returnи удивляться, что функция далаnil. - Объявить функцию без
local— она станет глобальной со всеми вытекающими рисками.
Итог
- Функция объявляется через
local function имя(параметры) ... end. - Результат возвращается через
return; без него функция даётnil. - Значения по умолчанию эмулируются конструкцией
param = param or default. - Функции — значения первого класса: их можно хранить в переменных и таблицах.