在Lua中,使用":"的函数和不使用函数的函数有什么区别?

Cat*_*ard 1 inheritance lua arguments function

假设我们有两个函数声明:

function MyData:New 
end
Run Code Online (Sandbox Code Playgroud)

和

function New(MyData)
end
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?:在继承和OOP方面,使用是否有任何特殊用途?我可以只调用:使用声明的函数:吗?

我来自仅使用C# - 所以如果有任何比较,它会是什么?

lhf*_*lhf 5

改编自手册,§3.4.10结束:

冒号语法用于定义方法,即具有隐式额外参数self的函数.因此,声明

function t:f (params) body end

是语法糖

t.f = function (self, params) body end