2011-05-06 81 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