zoukankan      html  css  js  c++  java
  • Lua 关于"."与":"号的用法区别

    "."的用法:

        TSprite = {
            x = 0,
            y = 0,
        }
        function TSprite.setPosition(m, x ,y) 
            m.x = x;
            m.y = y
        end
    
        local who = TSprite
      TSprite = nil who.setPosition(who,
    1, 2) print(who.x, who.y)

    --输出:1 2

    ":"的用法

        TSprite = {
            x = 0,
            y = 0,
        }
        function TSprite:setPosition(x ,y) --不同
            self.x = x;
            self.y = y
        end
    
        local who = TSprite
      TSprite = nil who:setPosition(
    1, 2) --只有这不同 print(who.x, who.y)

    --输出:1 2

    看出差别了吗?没错,就是少了个调用者参数

        who.setPosition(who, 1, 2)
        who:setPosition(1, 2)
    用“:”相当于自动输入调用者这个参数,既:前面table。 ---self是lua中隐藏的默认参数——调用者

    “:”这种用法多数用在,lua的“类”的用法中,因为用了“:”之后,你就可以把TSprite看成一个类了,而setPosition()就是TSprite的成员方法(更准确的说setPosition是一个构造方法),只是他需要在TSprite“类”的外部定义而已。
  • 相关阅读:
    google
    学习Linux第六天
    对比教学大纲
    周 记
    《世界是数字的》读后感
    《我是一只IT小小鸟》读后感
    前端小知识
    JavaScript 执行机制
    执行栈和任务队列
    支付宝前端员工培训手册
  • 原文地址:https://www.cnblogs.com/Kprogram/p/4186444.html
Copyright © 2011-2022 走看看