1、Lua脚本里方法之前的冒号和点:
备注:每个方法前面如果是冒号,则这个方法里面自带一个self属性,也就是这个LUA脚本自己类对象的self,当为点时,自带的self属性则为nil
调用者:local zwt = require "ZWTestLuaScript1"
被调者:ZWTestLuaScript1脚本中的方法如下:
方法1:
function ZWTestLuaScript1:OnSumbitBtnLogin(x,y)
print(self)
print(x)
print(y)
self:OnCancerBtnLogin(3,4)
end
方法2:
function ZWTestLuaScript1.OnSumbitBtnLogin(x,y)
print(self)
print(x)
print(y)
self:OnCancerBtnLogin(3,4)
end
以上两个方法的区别就是方法1为冒号,方法2为点。
调用方式区别:
方式1:
调用者用冒号,被调者用点:zwt.OnSumbitBtnLogin(3,4)
说明:被调者得到两个参数,第一个参数会默认变成一个table,也就是调用者默认传递self,而被调者第一个参数则接收self,所以最终的结果是
被调者的self为nil,被调者的第一个参数为table,被调者第二个参数为调用者的第一个参数,调用者第二个参数丢失。
运用范畴:
方式2:
调用者用冒号,被调者冒号:zwt:OnSumbitBtnLogin(3,4)
说明:参数能正常对应,其中被调方法里能用self,这个self也就是被调者自身的表,调被者自身的self调用自己所在表的方法也是同样的原理。
运用范畴:全部位置均可正常使用。
方式3:
调用者用点,被调者用冒号:zwt:OnSumbitBtnLogin(3,4)
说明:调用者参数1赋给了被调者的self,导致调用者第二个参数传递丢失,自身的self被赋值导致不能使用自己表里的其他方法。
方式4:
调用者用点,被调者用点:zwt.OnSumbitBtnLogin(3,4)
说明:调用时参数对应正确,但这个方法不能使用self,自身的self则为nil值,不能使用这个self去调用自己表里的方法。
运用范畴:不需要使用自己表的slef的时候可以正常使用。