在lua编程当中,会自己实现许多函数,并且进行调用,在调用的时候,会触及点号" . “和冒号” : "
他们两者的区别在于一个有自己的表self(冒号),一个没有(点号)。类似与C++中的类中有默认的this指针,而类外没有!
直观的看代码吧!
输出的结果是一样的
点号
Test = {length = 4}
function Test.set_length(Test, length)
Test.length = length
end
function Test.print_area(Test)
print(Test.length * Test.length)
end
print(Test.length)
Test.set_length(Test, 5)
print(Test.length)
Test.print_area(Test)
--输出的结果为
--4
--5
--25
下面的是使用冒号的
Test = {length = 4}
function Test:set_length(length)
self.length = length
end
function Test:print_area()
print(self.length * self.length)
end
print(Test.length)
Test:set_length(5)
print(Test.length)
Test:print_area()
--输出的结果同样为
--4
--5
--25
当然,用点号定义的函数,可以用冒号调用,反之亦然。
在用点号定义的函数用冒号调用时,只需要把形参中的表(自身)去掉即可
反之,则在形参中加入即可
Test:print_area()
Test.print_area(Test)