3

在 Lua 语言中,我可以在表中定义函数,例如

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

我想知道我是否可以通过这种方式创建方法,而不必像这样

function table:mymethod() ... end

我相当确定以这种方式添加方法是可能的,但我不确定这种技术的正确名称,我找不到它在寻找“lua”和“methods”之类的东西。

我的意图是将表格传递给诸如myfunction({data= stuff, name = returnedName, ?method?init() = stuff}).

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

所以……这里有人碰巧知道吗?

4

1 回答 1

5

当然:table:method()只是 的语法糖table.method(self),但您必须注意self参数。如果你这样做

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

thentab:f(x)将不起作用,因为这实际上是tab.f(tab,x),因此将返回tab而不是x.

您可以查看有关面向对象的 lua 用户 wikiPiL 第 16 章

于 2011-01-21T09:46:23.030 回答