【问题标题】:Lua: Table of functionsLua:函数表
【发布时间】:2016-10-16 04:51:20
【问题描述】:

我正在尝试将不同的函数存储在一个表中,但不知何故它不会像我想象的那样工作。这是我的“代码”

fn_table = { aFun1=print, aFun2=self:getSpeedLevel, aFun3=.... }

现在的问题是我可以使用 printassert 等内置函数来执行此操作,但它不适用于我拥有的其他函数。

我收到错误消息:“...函数参数应在 '}' 附近

是否也可以存储这些函数?

【问题讨论】:

    标签: function lua lua-table


    【解决方案1】:

    aFun2 = self:getSpeedLevel 是一个语法错误,这就是 Lua 所抱怨的。试试aFun2 = getSpeedLevelaFun2 = self.getSpeedLevel(假设self 是一个表)。 PiL 书中的Object-Oriented Programming 章节有更多存储在表中的函数示例。

    【讨论】:

    • 为了进一步澄清,冒号表示法实际上只是点表示法的语法糖。也就是说 self:getspeed() 真的是 self.getspeed(self)
    • 非常感谢你的评论——我疯了,试图弄清楚为什么 self.func() 不起作用而 self:func() 起作用...
    • 顺便说一下,如果你想让OO调用在调用aFun2时工作,你需要把它包装成function(...) self:getSpeedLevel(...) end
    猜你喜欢
    • 2020-07-28
    • 2018-10-18
    • 2016-11-19
    • 2018-07-01
    • 2010-10-05
    • 1970-01-01
    • 2017-06-05
    • 2012-06-02
    • 2016-07-01
    相关资源
    最近更新 更多