← Каталог
Luau - типизированный диалект Lua от Roblox — Service Locator и модульная архитектура
Фрагмент из «Luau - типизированный диалект Lua от Roblox»: Service Locator и модульная архитектура.
-- 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")