← Все вопросы
Как написать функцию в Lua для Roblox? Синтаксис function ... end
4
В Python функция через def, а как в Lua? Хочу сделать функцию, которая считает урон, чтобы не копировать один и тот же код в нескольких местах.
2 ответа
8
✓ Принятый ответ — помог автору
В Lua функция объявляется через function ... end:
local function dealDamage(hp, damage)
local result = hp - damage
return result
end
local newHp = dealDamage(100, 30)
print(newHp) -- 70
Разбор:
local function имя(параметры)— объявление.return— вернуть значение (необязателен, если функция просто что-то делает).endзакрывает функцию (в Lua вместо отступов/скобок почти вездеend).
Теперь, где надо посчитать урон, ты просто вызываешь dealDamage(...), а не копипастишь формулу. Если правило урона поменяется — правишь в одном месте.
3
Маленький нюанс: функцию можно вызвать только если она объявлена выше по коду. Lua читает сверху вниз, и если вызвать dealDamage() до строки с local function dealDamage, будет ошибка "attempt to call a nil value". Объявляй функции в начале скрипта.
Ваш ответ
, чтобы ответить на вопрос.