在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
以上。
原文地址:http://www.cnblogs.com/wuming1234/p/3715901.html