Код IT
← Каталог

Luau - типизированный диалект Lua от Roblox — Service Locator и модульная архитектура

Фрагмент из «Luau - типизированный диалект Lua от Roblox»: Service Locator и модульная архитектура.

Lua main.lua
-- init.luau
local Services = {}

-- Ленивая инициализация
function Services.GetService<T>(name: string): T
    if not rawget(Services, name) then
        local module = require(script.Parent.Services[name])
        Services[name] = module.new()
        if Services[name].Init then Services[name]:Init() end
    end
    return Services[name] :: T
end

-- Экспорт в глобальную область (только для внутреннего использования)
_G.Services = Services

-- Запуск
Services.GetService("PlayerService")
-- init.luau
local Services = {}

-- Ленивая инициализация
function Services.GetService<T>(name: string): T
    if not rawget(Services, name) then
        local module = require(script.Parent.Services[name])
        Services[name] = module.new()
        if Services[name].Init then Services[name]:Init() end
    end
    return Services[name] :: T
end

-- Экспорт в глобальную область (только для внутреннего использования)
_G.Services = Services

-- Запуск
Services.GetService("PlayerService")