欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Lua多重继承代码实例

程序员文章站 2022-07-05 11:03:39
local function search(k, plist) for i, v in pairs(plist) do local temp_v = v[...
local function search(k, plist)
	for i, v in pairs(plist) do
		local temp_v = v[k]
		if temp_v then
			return temp_v
		end
	end
end

function createclass(...)
	local c = {}
	local parents = {...}
	
	--父类列表中搜索方法
	setmetatable(c, { __index = function(t, k) return search(k, parents) end } )
	c.__index = c
	
	--定义一个新的构造函数
	function c:new(o)
		o = o or {}
		setmetatable(o, c)
		return o
	end
	return c
end

named = {}

function named:getname()
	return self.name
end

function named:setname(n)
	self.name = n
end

local namedaccount = createclass(account, named)
account = namedaccount:new({name = "paul"})
print(account:getname())