2011-01-21 44 views
3

在Lua语言,我能够在一个表中的东西,例如定义功能定义Lua的方法作为初始化

table = { myfunction = function(x) return x end } 

我想,如果我可以创建的方法这种方式,而不必做到像

function table:mymethod() ... end 

我相当肯定这是可以添加的方法这样,但我不能确定这项技术的正式名称,我不能找到它寻找“LUA”和“方法”或这样的。

我的意图是将一张表传递给一个函数,如myfunction({data= stuff, name = returnedName, ?method?init() = stuff})

不幸的是,我已经尝试过几种冒号方法声明的组合,但它们都不是有效的语法。

所以......这里的任何人碰巧知道?

回答

5

当然:table:method()只是语法糖table.method(self),但你必须照顾self的论点。如果你

tab={f=function(x)return x end } 

然后tab:f(x)将无法​​正常工作,因为这实际上是tab.f(tab,x),因此将返回tab,而不是x

你可以看看lua users wiki on object orientationPiL chapter 16

+0

哦,它的工作原理。 ......当我这么简单时,我正在寻找一个复杂的解决方案。咳咳。非常感谢! – viktorry 2011-01-21 10:01:37