【问题标题】:in LUA - having found a variable of type "function" in _G how to pass a parameter to it在LUA中-在_G中找到了“函数”类型的变量,如何将参数传递给它
【发布时间】:2021-07-28 03:35:11
【问题描述】:

我已经成功地在 _G 的表中找到了函数,对于那些不需要参数的函数,我使用如下语法调用它们:

a = _G[t] [f] () 

但有些函数需要参数,我尝试使用

a = _G[t] [f] (x)

但来自 LUA 的错误消息似乎说被调用的函数没有收到“x”。

因此我的问题是,如果函数被定义为

function t:f (arg)

当我有 t 和 f 的文本字符串时,如何给它一个参数来处理?

谢谢

【问题讨论】:

    标签: function lua globals


    【解决方案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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-15
      • 2011-10-06
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 2017-03-20
      相关资源
      最近更新 更多