Lua实现类继承的一种写法
发布时间:2020-12-14 22:55:58 所属栏目:大数据 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 --[[author:[email?protected]date:2014/7/18purpose:lua的继承演示--]]--- base class "Object"local Object = {_t = "Object"}function Object:new(
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 --[[ author:[email?protected] date:2014/7/18 purpose:lua的继承演示 --]] --- base class "Object" local Object = {_t = "Object"} function Object:new(id) local o = { _id = id } setmetatable(o,self) self.__index = self return o end function Object:type() return self._t end function Object:id() return self._id end --- class "Widget" driver from "Object" local Widget = {_t = "Widget"} setmetatable(Widget,Object) function Widget:new(id) local o = { _id = id,} setmetatable(o,self) self.__index = self -- function (tb,key) -- return self[key] -- end return o end -- function Widget:id() -- return self._id -- end --- class "Drawor" driver from "Object" local Drawor = {_t = "Drawor"} setmetatable(Drawor,Object) function Drawor:new(id,name) local o = { _id = id,_name = name,self) self.__index = self return o end function Drawor:name() return self._name end --- class "DrawPlane" driver from "Widget" and "Drawor" local DrawPlane = {_t = "DrawPlane",_father = {Widget,Drawor}} function DrawPlane:new(id) local o = { _id = id,} setmetatable(o,self) self.__index = function (tb,key) if self[key] then return self[key] end for _,v in pairs(self._father) do if v._t == key then return v end if v[key] then return v[key] end end end return o end local varA = Object:new() local varB = Widget:new(10) local varC = Drawor:new(30,"dwr") local varD = DrawPlane:new(51) print("varA type:",varA:type()) print("varB type:",varB:type()) print("varB._id: ",varB._id,varB:id()) print("varC name: ",varC:name()) print("varD type: ",varD:type()) print("varD id: ",varD:id()) print("varD father Widget--",varD.Widget:type()) 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |