您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx lua clone实现解析

2015-11-09 23:57 489 查看
cocos2dx lua clone使用是

local a = clone(b)clone的源代码
function clone(object)
local lookup_table = {}
local function _copy(object)
if type(object) ~= "table" then
return object
elseif lookup_table[object] then   --当一个table有两个相同的table就会用到它
return lookup_table[object]
end
local new_table = {}
lookup_table[object] = new_table
for key, value in pairs(object) do
new_table[_copy(key)] = _copy(value)
end
return setmetatable(new_table, getmetatable(object))
end
return _copy(object)
end
clone的思想总结就是1,遍历 2 ,递归。
通过遍历key ,找到value,递归_copy(value).

如果value类型不是table,则返回object给 new_table[_copy(value)]赋值;

如果类型是table的话,就相当于执行_copy(value),将value看成是一个table,

然后执行 for key, value in pairs(object) do
new_table[_copy(key)] = _copy(value)
end
...

直到value不是table为止。返回一个new_table数组引用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua cocos2d-x