首页 > 代码库 > lua中的冒号和点

lua中的冒号和点

在lua中创建一个Actor对象

function Actor.new()

    local temp = {}

    setmetatable(temp, Actor)

    temp.x = 10

    temp.y = 20

    return temp

end

obj = Actor.new()

那么obj.x = 10 obj.y =20

如果有另外一个方法

function Actor.test()

    print(x,y)

end

执行obj.test()

输出nil nil

因为test方法不知道obj的变量,所以要把obj本身传给他

就改成了

function Actor.test(obj)

    print(obj.x,obj.y)

end

执行obj.test(obj)

输出 10 20

这样略显麻烦,可以使用冒号

function Actor:test()

    print(self.x,self.y)

end

执行obj:test()

输出10 20

冒号要配套使用,定义方法的时候使用冒号,调用方法的时候也使用冒号,可以把调用方法的对象作为一个名叫self的变量传入方法。

但是应为冒号只是隐藏包含了一个self变量,所以可以使用点这样调用。

function Actor:test()

    print(self.x,self.y)

end

执行obj.test(obj)

输出10 20

以上。