直接上代码:
--类名 元表
function Class(clsName, super)
local superType = type(super)
local cls
//校验元表
if superType ~= "table" then
superType = nil
super = nil
end
//设置元表
if super then
cls = {}
setmetatable(cls, {__index = super})
cls.super = super
else
//创建构造函数
cls = {ctor = function() end}
end
--这里的作用类似于标识
cls.__cname=clsName
--__index指向本身
cls.__index = cls
//new方法
function cls.New(...)
--创建一个以cls为元表的table实例instance ,调用instance构造
local instance = setmetatable({}, cls)
instance.class = cls
instance:ctor(...)
return instance
end
return cls
end
这样就实现了一个简单的类似于C#的class的功能。