Lua:在子包之间加载模块。

我有以下的包结构:

--main.lua
--module1.lua
--utils/
    |----a.lua
    |----b.lua
--data/
    |----c.lua
    |----d.lua

module1.lua 我知道我可以轻松调用 utils.adata.d,例如。同时,我也知道在 utils/a.lua 中可以通过类似下面的方式引用 utils/b.lua

--a.lua
local current_package = (...):match("(.-)[^%.]+$")
require(current_package .. 'b')

但是我该如何从 data/c 中引用 utils/a

谢谢。

点赞
用户3677376
用户3677376

如果您认为给定的包结构可能是更大的包结构的一部分,则可以使用以下代码:

local parent_package = (...):match( "^(.-)[^.]+%.[^.]+$" )
require( parent_package .. "utils.a" )

否则,您应该从任何地方使用绝对模块路径:

require( "utils.a" )
2015-10-13 09:08:51