Module:utilities/require when needed
Isang helper function na maaaring gamitin bilang kapalit ng require
kung hindi tiyak na kakailanganin ang pinag-uusapang modulo. Kung na-load na ang modulo, ibinalik lang ito; kung wala pa, hindi ito mailo-load hanggang sa unang gamitin.
Ito ay karaniwang kapaki-pakinabang kapag tinutukoy ang mga variable sa simula ng isang modulo.
local loaded = package.loaded
local require = require
local setmetatable = setmetatable
return function(text, key)
local module = loaded[text]
if module then
return key and module[key] or module
end
local mt = {}
function mt:__index(k)
module = module or key and require(text)[key] or require(text)
return module[k]
end
function mt:__call(...)
module = module or key and require(text)[key] or require(text)
return module(...)
end
return setmetatable({}, mt)
end