lua实现多继承
2016-02-04 11:48
519 查看
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 类实现
- lua 类继承和实现
- Lua多重继承
- 项目记录19--tolua封装自己的View层01记版录
- xcode中打开lua代码有色差
- Lua开源项目
- 理解LUA的C API的最好的学习方法。
- iOS开发与Lua结合的使用
- tolua namespace
- programming in lua 之 lua api函数
- Lintcode: Expression Evaluation (Basic Calculator III)
- lua垃圾回收机制
- Lua中的元表与元方法
- 用LuaBridge为Lua绑定C/C++对象
- lua class
- Lua5.3 异或操作的一个坑
- lua协程用法举例
- lua os.time与os.date的简单用法
- vim+lua
- lua实现单例模式