LUA脚本中的方法使用冒号和点,以及调用者使用冒号和点

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的时候可以正常使用。