在 LUA 中 - 在 _G 中找到了一个类型 "function" 的变量,以及如何向其传递参数



我已经成功地在_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"

相关内容

  • 没有找到相关文章

最新更新