在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中找到了“函数”类型的变量,如何将参数传递给它的主要内容,如果未能解决你的问题,请参考以下文章

Lua的API函数

Lua笔记——4.环境Environment

包含当前文件路径的Lua全局变量?

Lua_变量

lua 怎么判断有没有一个全局变量

chapter 14_1 环境