繁体   English   中英

Lua-我如何使用另一个库?

[英]Lua - how do I use one lib from another?

我无法从另一个内部使用一个Lua库。 我不确定最好的方法。

我有一个返回带有功能的(非全局)表的库,如下所示:

-- foo.lua
local foo = {}
function foo:m1(...) ... end
function foo:m2(...) ... end
return foo

可以根据用户的需要将此库插入全局范围或本地范围:

-- globally
foo = require('foo')
-- or locally
local foo = require('foo')

我现在正在尝试创建另一个需要/使用该foo lib的库(我们称之为bar )。 像这样:

-- bar.lua
local bar={}
function bar:m3(...)
  ...
  foo:m1()
  ...
end

我的麻烦是-我不知道如何将foo “传递”给bar

理想情况下,我想将其作为参数发送给require

local foo = require('foo')
local bar = require('bar', foo)

但是我认为这是不可能的(是吗?)。 我可以考虑的另一种选择是在bar添加一个init方法:

local foo = require('foo')
local bar = require('bar')
bar:init(foo)

这行得通,但是对我来说看起来并不干净。 可能会忘记添加第三行,从而使bar处于“不安全”状态。

我缺少通用的Lua成语/方法吗?

只需在bar模块中直接调用require 'foo' 这是完全合法的。 foo模块将仅加载一次。 为了不将其泄漏到bar模块之外,请将其存储在局部变量中。

您还可以使用此惯用语将一个大模块分为几个部分,而一个模块则需要所有其他模块。 用户将只require一个模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM