別のものの中から1つのLuaライブラリを使用する際に問題があります。私はそれを行う最善の方法については分かりません。Lua - 別のライブラリからlibを使用するにはどうすればよいですか?
私はこのように、機能を持つ(非グローバル)テーブルを返すライブラリを持っている:
-- foo.lua
local foo = {}
function foo:m1(...) ... end
function foo:m2(...) ... end
return foo
このライブラリは、どのようなユーザーに応じて、グローバルまたはローカルの範囲のいずれかに挿入することができますたい:私は今、別のlibを作成しようとしている
-- globally
foo = require('foo')
-- or locally
local foo = require('foo')
このfoo
のlibを使用しています/必要とする(のがそれbar
を呼びましょう)。このような何か:
-- bar.lua
local bar={}
function bar:m3(...)
...
foo:m1()
...
end
私の悩みはある - 私はbar
からfoo
を「合格」する方法がわかりません。
理想的には私がrequire
にパラメータとしてそれを送りたい:
local foo = require('foo')
local bar = require('bar', foo)
しかし、私はそれが可能だとは思わない(それはあります?)。私が考えることができ、他のオプションが追加されたinit
方法bar
へ:
local foo = require('foo')
local bar = require('bar')
bar:init(foo)
これは動作しますが、私には非常にきれいに見えません。その第3行を追加するのを忘れて、bar
を「安全でない」状態にしておくことが可能です。
共通のLuaイディオム/メソッドがありますか?
もちろんです!どのように私はそれについて考えなかった!私は 'bar'から' foo'''を試してみましょう。もし失敗すれば、barの "path"を取得して、試してみてください(path .. '.foo')、そうでなければエラーです。ありがとう! – kikito