我有一堆生成的模块,其命名方案类似于lib1_0,其中1是主要版本,0是次要版本。每个函数内部约有300个名为type_156的函数。
我收集输入并根据外部因素拼凑需要从哪个模块执行哪个功能。
我希望能够根据这些因素拼凑一个函数调用
我尝试了各种loadstring()(仅适用于本地内容,不适用于模块)_G [],看起来像是同一件事
local lib1_0 = {}
function lib1_0.type_1(arg1, arg2, arg3)
print(arg1, arg2, arg3)
end
function lib1_0.type_2(arg1, arg2, arg3)
print(arg1, arg2, arg3)
end
return lib1_0
call1_0 = require(lib1_0)
call1_2 = require(lib1_2)
call2_0 = require(lib2_0)
-- do stuff and find that I want to execute lib1_0 function 2 based on external factors
major = 1
minor = 0
func2run = 2
call = "call" .. major .. "_" .. minor .. ".type_" .. func2run
_G[call]("test1", "test2", "test3")
--does not work, just an example of what I want to do
有解决方案吗?我缺少明显的东西吗?我对Lua很陌生,所以我很想念显而易见的东西
答案 0 :(得分:0)
请注意require()调用中的引号。 另外,有关load()的更多信息,请参见Lua编程(PiL)第4版,p148-149。
apple24
答案 1 :(得分:0)
local call_1 = require(lib1_0)
package.loaded.call_1 = call_1
package.loaded["lib1_0"] = nil
local call_2 = require(lib1_0)
package.loaded.call_2 = call_2
package.loaded["lib1_0"] = nil