将 Lua 方法定义为初始化。

在 Lua 语言中,我可以使用以下方式在表格中定义函数:

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

我想知道是否可以使用这种方式创建方法,而不是像下面这样:

function table:mymethod() ... end

我相当确定可以用这种方式添加方法,但我不确定这种技术的正确名称,也无法找到与 "lua" 和 "methods" 等相关的信息。

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

不幸的是,我尝试了几种使用冒号来声明方法的组合,但没有一种是有效的语法。

所以... 有人知道吗?

原文链接 https://stackoverflow.com/questions/4757101

点赞
stackoverflow用户513763
stackoverflow用户513763

当然: table:method()只是table.method(self)的语法糖,但你需要小心self参数。如果你执行以下代码:

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

那么 tab:f(x) 将无法正常工作,因为它实际上是 tab.f(tab,x),因此会返回 tab 而不是 x

你可以查看 lua用户维基关于面向对象编程的教程PiL的第16章

2011-01-21 09:46:23