文档章节

深拷贝

梦想游戏人
 梦想游戏人
发布于 2016/01/12 19:19
字数 141
阅读 54
收藏 0



--- 深拷贝对象
-- @param srcObj 对象
local function deepCopy(srcObj)
    --- 已被拷贝的对象列表(解决循环引用的问题)
    local lookup = { }

    local function _copy(object)
        if type(object) ~= "table" then
            return object
        elseif lookup[object] then
            return lookup[object]
        end

        local newTable = { }
        lookup[object] = newTable

        for k, v in pairs(object) do
            newTable[_copy(k)] = _copy(v)
        end

        return setmetatable(newTable, getmetatable(object))
    end

    return _copy(srcObj)
end




cocos2d 提供了一份

function clone(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
        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


© 著作权归作者所有

上一篇: 游戏中,显示FPS
下一篇: 汉诺塔
梦想游戏人
粉丝 41
博文 470
码字总数 184466
作品 0
成都
私信 提问
一文彻底理解JavaScript的深拷贝与浅拷贝

1. 认识深拷贝和浅拷贝 中一般有按值传递和按引用传递两种复制方式: 按值传递的是基本数据类型(Number,String,Boolean,Null,Undefined),一般存放于内存中的栈区,存取速度快,存放量小; ...

天道酬勤Lewis
06/19
0
0
js浅拷贝与深拷贝的区别和实现方式

如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。 1. 如果是基本数...

Victor818
07/13
0
0
深拷贝Or浅拷贝

个人理解: 深拷贝和浅拷贝同样是重写Object的Clone方法,这里必须要重写,因为Object的Clone方法是Protected类型的,在本类无法访问基类受保护的方法。深拷贝和浅拷贝意义基本相同,只是深拷...

祁猛
2016/07/04
30
0
JavaScript基础心法——深浅拷贝

原文地址:JavaScript基础心法——深浅拷贝 欢迎star。 如果有错误的地方欢迎指正。 浅拷贝和深拷贝都是对于JS中的引用类型而言的,浅拷贝就只是复制对象的引用,如果拷贝后的对象发生变化,...

axuebin
2017/11/01
0
0
JavaScript基础心法——深浅拷贝

原文地址:JavaScript基础心法——深浅拷贝 欢迎star。 如果有错误的地方欢迎指正。 浅拷贝和深拷贝都是对于JS中的引用类型而言的,浅拷贝就只是复制对象的引用,如果拷贝后的对象发生变化,...

axuebin
2017/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 调查人员问狗 那你在做什么啊?

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Let It Be》- John Denver 《Let It Be》- John Denver 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :每天看一遍,...

小小编辑
今天
6
0
高效程序员的45个习惯总结版-文末脑图

1 做事 一个重大的错误应该被当做一次学习而不是指责他人的机会,团队成员一起工作,应该互相帮助,而不是互相指责 2 欲速则不达 不要为了修复问题而去修复,要投入时间和精力保持代码整洁 ...

阿提说说
今天
18
0
带南海九段线分位数地图可视化(R语言版)

今天带来一篇承诺虾神的可视化博客。内容是使用R语言进行带南海九段线分位数地图可视化。虾神的原博文地址如下(Python版)。 Python实现带南海九段线分位数地图完整可视化版本(附代码及数据...

胖胖雕
今天
12
0
Nginx 的进程结构,你明白吗?

Nginx 进程结构 这篇文章我们来看下 Nginx 的进程结构,Nginx 其实有两种进程结构: 单进程结构 多进程结构 单进程结构实际上不适用于生产环境,只适合我们做开发调试使用。因为在生产环境中...

武培轩
今天
20
0
蓝鲸平台部署

环境 系统:Centos7 依赖包:java8 主机: 10.0.1.150 域名:paas.ops.net;cmdb.ops.net;job.ops.net 生成SSH key ssh-keygen -t rsa -P '' 生成证书 https://bk.tencent.com/download_ssl/......

以谁为师
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部