1
我在使用另一個Lua庫時遇到了麻煩。我不確定最好的辦法。Lua - 如何使用另一個lib?
我有一個返回與功能的(非全局)表的庫,就像這樣:
-- foo.lua
local foo = {}
function foo:m1(...) ... end
function foo:m2(...) ... end
return foo
這個庫可以被插入在全局或局部範圍,這取決於用戶什麼希望:
-- globally
foo = require('foo')
-- or locally
local foo = require('foo')
我現在正在試圖創建另一個LIB(姑且稱之爲bar
)需要/使用此foo
庫。事情是這樣的:
-- 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習語/方法,我失蹤了?
但當然!我怎麼沒有想到這個!我會從'bar'嘗試'require'foo'',如果失敗,我會得到酒吧的「路徑」並嘗試ququire(path ..'.foo')',否則會出錯。謝謝! – kikito