Блог школы Роблоппа — Роблокс Студио, обучение, познавательные статьи и новости школы

Именные и безымянные функции в Lua (Roblox)

Документация
Функции — одна из самых важных тем в Lua и Роблокс Студио. Именно через функции мы описываем поведение объектов, реакцию на события и логику игры.

Что такое функция простыми словами

Функция — это кусочек кода, который можно запускать сколько угодно раз.
Она может принимать данные (параметры) и выполнять одно и то же действие.
Пример из жизни:
«Сделать чай» — это функция. Ты можешь вызывать её много раз, а шаги внутри всегда одинаковые.

Именные функции

Что это такое

Именная функция — это функция, у которой есть имя.
По этому имени мы можем вызывать её в любом месте скрипта.

Пример простой именной функции

local function sayHello()
print("Привет!")
end

sayHello()
В этом примере:
  • sayHello — имя функции;
  • код внутри выполняется, когда мы вызываем sayHello().

Именные функции с параметрами

Функции могут принимать параметры — данные, которые мы передаём внутрь функции.
local function greetPlayer(playerName)
print("Привет, " .. playerName)
end

greetPlayer("Alex")
Здесь строка "Alex" передаётся в параметр playerName и используется внутри функции.

Где используются именные функции

Именные функции чаще всего применяются, когда:
  • логика используется много раз;
  • код должен быть читаемым и учебным;
  • функция достаточно большая.
Пример из Роблокс Студио:
local function openDoor(door)
door.Transparency = 0.5
door.CanCollide = false
end
Такую функцию удобно вызывать для разных дверей.

Безымянные (анонимные) функции

Что это такое

Безымянная функция — это функция без имени.
Обычно она создаётся прямо в том месте, где используется.

Безымянная функция в переменной

local jump = function()
print("Прыжок")
end

jump()
Хотя функция без имени, мы сохраняем её в переменную и можем вызывать через неё.

Самое частое применение — события

В Роблокс Студио безымянные функции чаще всего используются при работе с событиями.
button.MouseButton1Click:Connect(function()
print("Кнопка нажата")
end)
Такая функция:
  • нужна только в этом месте;
  • не требует имени;
  • делает код компактным.

Что выбрать и когда

Используй именные функции, если:

  • функция длинная;
  • код повторяется;
  • ты пишешь учебный или понятный код;
  • функция описывает отдельное действие (открыть дверь, начислить очки).

Используй безымянные функции, если:

  • функция нужна в одном месте;
  • ты работаешь с событиями (Connect);
  • логика короткая;
  • нет смысла давать имя.

Типичная ошибка новичков

❌ Писать длинную логику прямо внутри безымянной функции:
button.MouseButton1Click:Connect(function()
-- много строк сложного кода
end)
✅ Гораздо лучше вынести логику в именную функцию:
local function onButtonClicked()
-- логика
end

button.MouseButton1Click:Connect(onButtonClicked)
Так код становится:
  • понятнее;
  • легче для отладки;
  • удобнее для обучения детей.

Вывод

Именные и безымянные функции — это не «хорошо» и «плохо», а два инструмента.
Хороший код в Роблокс Студио:
  • использует именные функции для логики;
  • использует безымянные функции для событий;
  • легко читается и объясняется.

🚀 Хочешь научиться писать свои скрипты с нуля?

Запишись на обучение по Роблокс Студио на сайте roblo.ru
Ты узнаешь, как создавать игры, интерфейсы и программировать события — шаг за шагом!
Made on
Tilda