标签:
1 -- 二维向量类 2 3 local P = { 4 x = 0, 5 y = 0 6 } 7 8 Vec2 = P 9 10 --setfenv(1, P) 11 12 local function optAdd(a, b) 13 local o = P:new() 14 o.x = a.x + b.x 15 o.y = a.y + b.y 16 return o 17 end 18 19 function P:new(x, y) 20 o = {} 21 22 -- 构造 -- 23 o.x = x 24 o.y = y 25 26 -- 关联 -- 27 setmetatable(o, self) 28 self.__index = self 29 30 -- 操作符重载 -- 31 self.__add = optAdd 32 33 return o 34 end 35 36 function P:add(x, y) 37 self.x = self.x + x 38 self.y = self.y + y 39 end 40 41 -- class end 42 43 obj = Vec2:new(3,2) 44 obj2 = Vec2:new(4) 45 46 obj3 = obj + obj2 47 48 print(obj3.x .. "," .. obj3.y)
ps:Lua面向对象的实现方法不止一种。
运行结果:
标签:
原文地址:http://www.cnblogs.com/ElementCraft/p/4593651.html