您的位置:首页 > 编程语言 > Lua

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

2014-12-26 12:06 260 查看
"."的用法:

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“类”的外部定义而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: