由Cocos2dx的部分代码引出的对Lua元表的认识

今天游戏后端还没有来,继续看Cocos2dx引擎代码,过程中结合伟哥(大学舍友到项目伙伴到现在的公司的技术部头头)写

的代码,引发了我对Lua元表的一点认识。。。

伟哥的代码:

1 -- 因为子类覆盖了父类同名方法,通过此方法获得父类方法
2 self.addChild_p = getmetatable(self).addChild

开始时搞不清getmetatable()是干啥的,怎么还高亮,查lua库,

意思是返回 参数object的__metatable(元表)。

通过下面博友的帖子了解元表的大概。。。

http://www.cnblogs.com/simonw/archive/2007/01/17/622032.html

贴出练习代码:

 1 local a = {1, 2, 3, 4}
 2 local b = {"a", "b", "c", "d"}
 3 local c = {}
 4 c.__add = function(opt1, opt2)
 5     for i, v in ipairs(opt2) do
 6          table.insert(opt1, v)
 7          print(v)
 8     end
 9     return opt1
10 end
11 
12 setmetatable(a, c)
13 t = a + b
14 for i, v in ipairs(t) do
15     print(i, v)
16 end

显示结果:

posted @ 2014-10-14 11:11  -浮云骑士-  阅读(214)  评论(0编辑  收藏  举报