构造类
local setmetatable = setmetatable
Class = {}
function Class:new(super)
local class = {}
class.__index = class
local mt = {}
setmetatable(class, mt)
if super then
mt.__index = super
end
function class:new(...)
local obj = {}
setmetatable(obj, self)
if obj.__new then
obj:__new(...)
end
return obj
end
return class
end
return Class
示例
require "Class"
Character = Class:new()
local this = Character
function this:__new()
self.x = 1;
self.y =2;
self.z = 3
end
Player = Class:new(Character)
function Player:__new()
Character.__new(self)
self.v = 1
end
local p1 = Player:new()
local c1 = Character:new()
print("c1 x:"..c1.x)
print("c1 y:"..c1.y)
--print("c1 v:"..c1.v)
print("p1 x:"..p1.x)
print("p1 y:"..p1.y)
print("p1 v:"..p1.v)
运行结果