当前位置 博文首页 > Lua多重继承代码实例

    Lua多重继承代码实例

    作者:admin 时间:2021-02-08 15:26

    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())
    

    js
    下一篇:没有了