首页 > 其他 > 详细

lua实现多继承

时间:2016-02-04 12:27:00      阅读:125      评论:0      收藏:0      [点我收藏+]
http://my.oschina.net/u/156466/blog/401576
local class1 = {} function class1:new() local obj = {} setmetatable(obj, {__index= class1}) return obj end function class1:print1() print("class1:print()") end function class1:print2() print("class1:print()") end local class2 = {} function class2:new() local obj = {} setmetatable(obj, {__index= class2}) return obj end function class2:print2() print("class2:print()") end local class3 = {} function class3:new() local obj = {} setmetatable(obj, {__index= class3}) return obj end function class3:print2() print("class3:print()") end function class3:print3() print("class3:print()") end function super(k, list) for i,v in ipairs(list) do local ret = v[k] if ret then return ret end end end local class = {} function class:new(...) local obj = {} -- local base = {class1, class2} local base = {...}; --t为调用的对象,k为方法名 setmetatable(class, {__index= function(t,k) return super(k, base) end}) setmetatable(obj, {__index = class}) return obj end local c = class:new(class2,class1,class3); -- c:print1(); c:print2(); -- c:print3();

 

lua实现多继承

原文:http://www.cnblogs.com/602147629/p/5181266.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!