← Все вопросы

Как написать функцию в Lua для Roblox? Синтаксис function ... end

Задан 30 месяцев назад568 просмотров2 ответа
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". Объявляй функции в начале скрипта.

Ваш ответ

, чтобы ответить на вопрос.