[英]How do I use a module defined in lib/ folder of Phoenix project?
[英]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.