lua - 使用来自不同lua lib的两个相同名称函数

时间:2015-08-24 17:58:46

标签: lua

我有两个不同的lib由lua编写,但具有相同的函数名。

如何在不修改lib源的情况下选择其中一个?

require ('A') --A lib
require ('B') --B lib
test() -- function from B

如果我想要A的测试功能,我该怎么办?

这是我尝试过的一些方法。

  1. LuaJ loading two functions with the same name from two different LuaScripts

    我发现了这个,但我不想修改lib源代码。

  2. 将函数另存为不同的名称,如下所示:

    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()。

    还有更好的方法吗?

1 个答案:

答案 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