在 Lua 中,[function class:me() end] 是否等同于 [function class.me(self) end]?

我对 Lua 中的冒号运算符有点不太理解。因此,我进行了一些冒号运算符的实验,并得出了以下结论。

class = {}

function class:me()
end

等同于

function class.me(self)
end

我的结论正确吗?

如果不正确,出了什么问题呢?

点赞
用户3735873
用户3735873

你的结论是正确的。

冒号形式只是语法糖,用于以 self 作为第一个参数的点号形式。这是有文档记录的:

冒号语法用于定义方法,即具有隐含额外参数 self 的函数。因此,语句

function t.a.b.c:f (params) body end

是点号形式的语法糖,即

t.a.b.c.f = function (self, params) body end
2015-02-23 23:05:26