zoukankan      html  css  js  c++  java
  • 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的时候可以正常使用。
  • 相关阅读:
    归并排序(Merge Sort)
    AtCoder AGC035D Add and Remove (状压DP)
    AtCoder AGC034D Manhattan Max Matching (费用流)
    AtCoder AGC033F Adding Edges (图论)
    AtCoder AGC031F Walk on Graph (图论、数论)
    AtCoder AGC031E Snuke the Phantom Thief (费用流)
    AtCoder AGC029F Construction of a Tree (二分图匹配)
    AtCoder AGC029E Wandering TKHS
    AtCoder AGC039F Min Product Sum (容斥原理、组合计数、DP)
    AtCoder AGC035E Develop (DP、图论、计数)
  • 原文地址:https://www.cnblogs.com/vsirWaiter/p/7573608.html
Copyright © 2011-2022 走看看