2011-05-06 82 views
3

我试图在表中存储不同的函数,但不知何故,它不会按照我认为的方式工作。这里是我的“代码”Lua:函数表

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

现在的问题是,我可以用内置的功能,如printassert等,但它不会与我有其他职能的工作做到这一点。

我得到的错误:” ...函数参数预计近期‘}’

是否有可能保存这些功能以及

回答

5

aFun2 = self:getSpeedLevel是一个语法错误,这就是Lua的抱怨?试着aFun2 = getSpeedLevelaFun2 = self.getSpeedLevel(假设self是一个表)。在PIL书中Object-Oriented Programming章有被存储在表中的功能的多个示例。

+0

为了进一步阐明,冒号表示法是真的结束点符号只是语法糖也就是说,self:getspeed()是rea lly self.getspeed(self) – jhocking 2011-05-07 11:26:26

+0

非常感谢您的评论 - 我疯了试图弄清楚为什么self.func()不工作,而自我:func()的作品... – Florian 2011-05-08 17:28:33

+0

顺便说一句,如果你当调用一个函数2时需要使用OO调用,你需要将它封装为'function(...)self:getSpeedLevel(...)end'。 – 2011-05-16 20:06:29