关于lua中的点号与冒号的区别与使用
如果函数定义使用冒号,则默认会接受self参数,其调用时会传递调用它本身作为参数,而使用点号则不会。
// 点号和冒号的用法
class={}
function class:new()
return self
end
function class:init(arg, num)
self.arg = arg
self.num = num
print(self.arg)
end
function class.util(arg, num)
class.arg = arg
class.num = num
print(class.arg)
end
local obj = class:new()
class:init("aaa", 1000)
print(">>>>>",obj.num)
class.util("bbbb", 999)
print(">>>>>",class.num)
也可以理解为:
“:”引用静态成员方法。如上图的class:init()冒号定义的方法,后续在本函数中可以使用self:init()来代替,self.arg则是静态方法中的成员。
“.”点号的使用则是普通成员方法,如上图的class.util()点号定义的方法,其中class.arg则为它的普通方法中的成员。
注:在lua中的self和c++,c#,java中所使用的this的性质类似。
运行结果如下图
以上内容是个人的一点总结,如果有错误或不严谨的地方,望能批评指正,欢迎点赞收藏