在LUA中-在_G中找到了“函数”类型的变量,如何将参数传递给它
Posted
技术标签:
【中文标题】在LUA中-在_G中找到了“函数”类型的变量,如何将参数传递给它【英文标题】:in LUA - having found a variable of type "function" in _G how to pass a parameter to it 【发布时间】:2021-07-28 03:35:11 【问题描述】:我已经成功地在 _G 的表中找到了函数,对于那些不需要参数的函数,我使用如下语法调用它们:
a = _G[t] [f] ()
但有些函数需要参数,我尝试使用
a = _G[t] [f] (x)
但来自 LUA 的错误消息似乎说被调用的函数没有收到“x”。
因此我的问题是,如果函数被定义为
function t:f (arg)
当我有 t 和 f 的文本字符串时,如何给它一个参数来处理?
谢谢
【问题讨论】:
【参考方案1】:一个函数定义如下
function t:f(arg)
有一个隐含的第一个参数 self
所以定义实际上是一样的:
function t.f(self, arg)
因此,当您调用a = _G["t"]["f"](x)
时,您将x
作为self 传递,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"
【讨论】:
以上是关于在LUA中-在_G中找到了“函数”类型的变量,如何将参数传递给它的主要内容,如果未能解决你的问题,请参考以下文章