lua虽然没有类,但是可以通过table+function模拟出来。例如:
Rect = {area = 0, len = 0, width = 0}
function Rect:new (o,len,width)
o = o or {}
setmetatable(o, self)
self.__index = self
self.len = len or 0
self.width = width or 0
self.area = len*width;
return o
end
function Rect:printArea ()
print("area:",self.area)
end
tmp = Rect:new(nil, 3, 3)
print(tmp.len)
tmp:printArea()
使用"class"生成类
#!/usr/local/bin/lua
local class = require("class")
local Queue = class("Queue")
function Queue:ctor()
self.front = 1
self.tail = 1
self.data = {}
end
function Queue:empty()
return self.front == self.tail
end
function Queue:size()
return self.tail - self.front
end
function Queue:pop()
if self.front == self.tail then return nil end
local ret = self.data[self.front]
self.front = self.front + 1
if self.front == self.tail then
self.front = 1
self.tail = 1
self.data = {}
end
return ret
end
function Queue:push(v)
self.data[self.tail] = v
self.tail = self.tail + 1
end
function Queue:clear()
self.front = 1
self.tail = 1
self.data = {}
end
function Queue:front()
if self.front == self.tail then return nil end
local ret = self.data[self.front]
return ret
end
function Queue:getAt(index)
if self.front == self.tail then return nil end
local ret = self.data[self.tail - index -1]
return ret
end
cc.exports._class.Queue = Queue
return Queue
其中class是使用cocos2d-lua中的class创建的类。
参考资料:
https://zhuanlan.zhihu.com/p/123971515
https://blog.csdn.net/honey199396/article/details/50888063
https://www.cnblogs.com/newlist/p/3649320.html
https://blog.csdn.net/weixin_39407066/article/details/80876523