面向对象
组成:成员变量、成员函数
要求:每个对象,由类生成,有自己的成员变量、使用共同的成员函数
Lua构造面向对象
原理
用table表示成员变量
用function表示成员函数
用metatable关联对象和类
实现
1 -- 空类 2 Class = {} 3 4 -- 指向自己 5 Class.__index = Class 6 7 -- 成员变量 8 Class.val = "Class" 9 10 -- 成员函数 11 function Class:print() --相当 Class.print(self) 12 print("Class:print val = "..self.val) 13 end 14 15 function Class:modify() 16 self.val = "modify" 17 end 18 19 -- 构造函数 20 function Class:new(initVal) 21 -- 申请空间 22 local object = {} 23 24 -- 初始数据 25 object.val = initVal 26 27 -- 关联class 28 setmetatable(object,Class) 29 30 -- 返回对象 31 return object 32 end 33 34 -- test 35 local obj = Class:new("object") 36 print("before modify") 37 Class:print() 38 obj:print() 39 print("after modify") 40 obj:modify() 41 Class:print() 42 obj:print() 43 44 -- output 45 -- before modify 46 -- Class:print val = Class 47 -- Class:print val = object 48 -- after modify 49 -- Class:print val = Class 50 -- Class:print val = modify
原文:https://www.cnblogs.com/wwgk/p/11623096.html