我有两个不同的lib由lua编写,但具有相同的函数名。
如何在不修改lib源的情况下选择其中一个?
require ('A') --A lib
require ('B') --B lib
test() -- function from B
如果我想要A的测试功能,我该怎么办?
LuaJ loading two functions with the same name from two different LuaScripts
我发现了这个,但我不想修改lib源代码。
将函数另存为不同的名称,如下所示:
require ('A') --A lib
_G.testA = test
require ('B') --B lib
_G.testB = test
testA() -- function from A
testB() -- function from B
但是如果有一天新的函数名称testA()或testB()再次中断。
我仍然需要将所有存在的test()更改为testA()或testB()。
还有更好的方法吗?
答案 0 :(得分:0)
您描述的代码
require ('A') --A lib
_G.testA = test
require ('B') --B lib
_G.testB = test
testA() -- function from A
testB() -- function from B
绝对是解决问题的一种方法。
为避免将来出现问题,您可以在地图中添加新功能
-- Example library.lua
-- Old code not in map
function my_old_func(params)
-- do some stuff
end
-- New code goes down here
local mylibrary = {}
function mylibrary:my_awesome_func(params)
my_old_func(params)
end