У меня проблемы с использованием одной библиотеки Lua из другой.Я не уверен, как лучше это сделать.
У меня есть библиотека, которая возвращает (не глобальную) таблицу с функциями, например:
-- foo.lua
local foo = {}
function foo:m1(...) ... end
function foo:m2(...) ... end
return foo
ThisБиблиотека может быть вставлена в глобальную или локальную область, в зависимости от того, что хочет пользователь:
-- globally
foo = require('foo')
-- or locally
local foo = require('foo')
Я сейчас пытаюсь создать другую библиотеку (назовем ее bar
), которая требует / использует этоfoo
lib.Примерно так:
-- bar.lua
local bar={}
function bar:m3(...)
...
foo:m1()
...
end
Моя проблема в том, что я не знаю, как "передать" foo
на bar
.
В идеале я хотел бы отправить его какпараметр для require
:
local foo = require('foo')
local bar = require('bar', foo)
Но я не думаю, что это возможно (правда?).Другим вариантом, о котором я мог подумать, было добавление init
метода к bar
:
local foo = require('foo')
local bar = require('bar')
bar:init(foo)
Это работает, но мне не кажется чистым;можно забыть добавить третью строку, оставив bar
в «небезопасном» состоянии.
Есть ли какой-то общий метод / метод Lua, который я пропускаю?