使用 Lua,我试图动态调用带参数的函数。我想以以下方式发送要解析的字符串:
- 第一个参数是一个类实例“句柄”
- 第二个是要调用的函数
- 剩下的就是争论
“模块”是一个表,例如{ string=<instance of a class> }
split() 是一个简单的解析器,它返回一个带有索引字符串的表。
function Dynamic(msg)
local args = split(msg, " ")
module = args[1]
table.remove(args, 1)
if module then
module = modules[module]
command = args[1]
table.remove(args, 1)
if command then
if not args then
module[command]()
else
module[command](unpack(args)) -- Reference 1
end
else
-- Function doesnt exist
end
else
-- Module doesnt exist
end
end
当我通过“参考 1”尝试使用“ignore remove bob”时,它会尝试在模块中与“ignore”关联的实例上调用“remove”,并给出包含在表中的参数“bob”(带有单值)。
但是,在调用的另一端,remove 函数不接收参数。我什至尝试将“参考 1”行替换为
module[command]("bob")
但我得到了同样的结果。
这是另一个不接收参数的函数"bob"
:
function TIF_Ignore:remove(name)
print(name) -- Reference 2
TIF_Ignore:rawremove(name)
TIF_Ignore:rawremovetmp(name)
print(title.. name.. " is not being ignored.")
end
当我试图找出问题所在时,我在代码中添加了“参考 2”。当我执行“忽略删除 bob”,或者当我在“参考 1”上将“unpack(args)”替换为“bob”时,“remove”中的变量“name”仍然为零。