使用Lua,我正在尝试动态调用带参数的函数。我想发送一个字符串以便进行解析,其中:
split()是一个简单的解析器,返回一个带有索引字符串的表格。
当我使用“忽略删除bob”进行测试时,在“参考1”中,它试图在模块中与“忽略”相关联的实例上调用“remove”,并提供包含一个值的表中的参数“bob”。
然而,在调用的另一侧,remove函数未收到该参数。我甚至尝试用以下代码替换“参考1”行:
- 第一个参数是类实例“Handle”
- 第二个参数是要调用的函数
- 剩下的都是参数
{ string=<类的实例> }
的表格。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
当我使用“忽略删除bob”进行测试时,在“参考1”中,它试图在模块中与“忽略”相关联的实例上调用“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
当我试图找出问题所在时,我在代码中添加了“Reference 2”。当我执行“ignore remove bob”或者在“Reference 1”中用“bob”替换“unpack(args)”时,“remove”函数中的变量“name”仍然为nil。