加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读