码迷,mamicode.com
首页 > 其他好文 > 详细

Lua 关于"."与":"号的用法区别

时间:2014-12-26 12:52:18      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:

"."的用法:

    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的成员方法了,只是他需要在类的外部定义而已。

 

Lua 关于"."与":"号的用法区别

标签:

原文地址:http://www.cnblogs.com/Kprogram/p/4186444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!