lua的创建类, 自定义class
-- lua面向对象扩展 local _class={} function class(super) local class_type={} class_type.ctor=false class_type.super=super class_type.new=function(...) local obj={} do local create create = function(c,...) if c.super then create(c.super,...) end if c.ctor then c.ctor(obj,...) end end create(class_type,...) end setmetatable(obj,{ __index=_class[class_type] }) return obj end local vtbl={} _class[class_type]=vtbl setmetatable(class_type,{__newindex= function(t,k,v) vtbl[k]=v end }) if super then setmetatable(vtbl,{__index= function(t,k) local ret=_class[super][k] vtbl[k]=ret return ret end }) end return class_type end -- 定义Entity类型 Entity = class() function Entity:ctor() self.id = 0 -- 编号 self.name = "enity" -- 名字 self.attributes = {} -- 存放其它 setmetatable(self.attributes, { __mode = "k" }) --设置弱引用 end Player = class(Entity) function Player:ctor() self.name = "player" -- 名字 end --创建一个player对象 local p = Player:new() p.attributes["cc"] = 5 print(p.name, p.id, p.attributes["cc"])
标签:function,end,一个,super,lua,--,type,class From: https://www.cnblogs.com/barrysgy/p/18210965