我在另一个内部使用一个Lua lib时遇到了麻烦.我不确定最好的方法.
我有一个库,它返回一个带有函数的(非全局)表,如下所示:
-- foo.lua
local foo = {}
function foo:m1(...) ... end
function foo:m2(...) ... end
return foo
Run Code Online (Sandbox Code Playgroud)
可以将此库插入全局或本地范围,具体取决于用户的需求:
-- globally
foo = require('foo')
-- or locally
local foo = require('foo')
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试创建另一个bar需要/使用此foolib的库(让我们称之为).像这样的东西:
-- bar.lua
local bar={}
function bar:m3(...)
...
foo:m1()
...
end
Run Code Online (Sandbox Code Playgroud)
我的问题是-我不知道如何"传递" foo到bar.
理想情况下,我想将其作为参数发送到require:
local foo = require('foo')
local bar = require('bar', foo)
Run Code Online (Sandbox Code Playgroud)
但我不认为这是可能的(是吗?).我能想到的另一个选择是添加一个init方法bar:
local foo = require('foo')
local bar = require('bar')
bar:init(foo)
Run Code Online (Sandbox Code Playgroud)
这有效,但对我来说看起来不太干净; 有可能忘记添加第三行,bar处于"不安全"状态.
我缺少一个常见的Lua成语/方法吗?
只需require 'foo'直接在你的bar模块中打电话.这是完全合法的.该foo模块仅加载一次.为了不将其泄漏出bar模块,请将其存储在本地变量中.
您也可以使用这个习惯用法将一个大模块分成几个部分,并让一个模块需要所有其他模块.用户require只需要一个模块.
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |