fin*_*nnw 6 lua module circular-dependency lua-5.2
有办法吗?
A
和B
)require
相互配合C
)可以使用A
但不能使用B
egC.lua
:
local A = require 'A'
-- ...
A.foo()
Run Code Online (Sandbox Code Playgroud)
D
需要B
但不需要A
和/或E
要求两个A
和B
A
也不是B
,也没有他们的成员应该被加入到全局命名空间.module
和setfenv
函数(Lua 5.2中不推荐使用)相关:Lua - 我如何使用另一个lib?(注意:此解决方案不处理循环依赖.)
我找到了一个很简单的方法:
A.lua
:
local A = {}
local B
function A.foo()
B = B or require 'B'
return B.bar()
end
function A.baz()
return 42
end
return A
Run Code Online (Sandbox Code Playgroud)
B.lua
:
local B = {}
local A
function B.bar()
A = A or require 'A'
return A.baz()
end
return B
Run Code Online (Sandbox Code Playgroud)