Lua中table的拷贝问题
2015-08-10 17:32
555 查看
这里提供了两种方法。
方法一:
方法二:
注意:方法二中把被拷贝的table的原表也给了新表。这样相对来说是比较安全的。建议这样做。
方法一:
function MainScene:deepCopy(newTble, oldTbl) if oldTbl == nil then return end for key,value in pairs(oldTbl) do if type(value) == "table" then newTble[key] = {} self:deepCopy(newTble[key], value) elseif type(value) == "userdata" then newTble[key] = value elseif type(value) == "thread" then newTble[key] = value else newTble[key] = value end end end
方法二:
--深度拷贝 function MainScene:deepcopy(object) local lookup_table = {} local function _copy(object) if type(object) ~= "table" then return object elseif lookup_table[object] then return lookup_table[object] end -- if local new_table = {} lookup_table[object] = new_table for index, value in pairs(object) do new_table[_copy(index)] = _copy(value) end return setmetatable(new_table, getmetatable(object)) end return _copy(object) end
注意:方法二中把被拷贝的table的原表也给了新表。这样相对来说是比较安全的。建议这样做。
相关文章推荐
- ulua
- lua 环境设置
- Lua笔记10-非全局函数
- 只有有lua编译能力不足200K代码吧?NO! Python 有可能。
- lua中的泛型for 和迭代器
- Lua 语言输出Table详细信息的实现
- 超过lua上帝的语言
- lua for通过循环table一些差异
- Lua笔记9-再论函数
- lua学习笔记(1)
- Lua笔记8-模块和包
- lua lpeg
- C++ 和 lua代码互相调用
- Lua协程
- 【转】Lua coroutine 不一样的多线程编程思路
- [转]-Lua协程的实现
- lua table深度colone
- lua 判断字符串中引号,括号是否平衡
- lua 元表与元方法示例
- [转]lua面向对象编程之点号与冒号的差异详细比较