[Lua学习]简单的类定义(OO概念)

 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面向对象的实现方法不止一种。

 

运行结果:

[Lua学习]简单的类定义(OO概念)

你可能感兴趣的:(lua)