我已经成功地在_G中的表中找到了函数,对于那些不需要参数的函数,我用如下语法调用了它们:
a = _G[t] [f] ()
但是有些函数需要参数,我已经尝试使用传递它们
a = _G[t] [f] (x)
但是来自LUA的错误消息似乎表明被调用函数没有接收到"0";x〃;。
因此,我的问题是,如果函数被定义为
function t:f (arg)
当我有t和f的文本字符串时,我如何给它一个参数来处理?
感谢
类似定义的函数
function t:f(arg)
具有self
的隐式第一个arg,因此定义实际上与相同
function t.f(self, arg)
因此,当您调用a = _G["t"]["f"](x)
时,您将以self的身份传入x
,并且arg
设置为nil。要正确地调用此,您需要执行
_G["t"]["f"](_G["t"], arg);
一些示例代码,以便您可以在中看到这一点
t = {}
function t:f(arg)
print(self, arg)
end
_G["t"]["f"]("test") -- "test nil"
_G["t"]["f"](_G["t"],"test") -- "table: 00e09750 test"