深拷贝和浅拷贝问题
来源:互联网 发布:棋牌软件开发定制 编辑:程序博客网 时间:2024/05/17 07:51
下午遇到一个关于一个表的数值拷贝的问题,有点意思,不多说,直接上代码
--记录玩家的信息
self._userInfo = {};
for i=1,PLAY_COUNT do
table.insert(self._userInfo,self._deskUserList:getUserByDeskStation(i-1))
end
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 newObject = {}
lookup_table[object] = newObject
for key, value in pairs(object) do
newObject[_copy(key)] = _copy(value)
end
return setmetatable(newObject, getmetatable(object))
end
return _copy(object)
end
这个函数使用方法如下:
--记录玩家的信息
self._userInfo = {};
self._userInfo= clone(self._deskUserList._users)
这样就可以解决这个问题。
下面是冒泡时间
。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。
。。。。。。。。。。。。。
。。。。。。。。。。。。
。。。。。。。。。。。
。。。。。。。。。。
。。。。。。。。。
。。。。。。。。
。。。。。。。
。。。。。。
。。。。。
。。。。
。。。
。。
。
--记录玩家的信息
self._userInfo = {};
for i=1,PLAY_COUNT do
table.insert(self._userInfo,self._deskUserList:getUserByDeskStation(i-1))
end
这样拷贝的数据是浅拷贝,所以原始数据改变的话,这里的数据也是会改变的,等于号在lua中也是浅拷贝,所以有的时候,你想保存一份数据的时候,就要小心了,
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 newObject = {}
lookup_table[object] = newObject
for key, value in pairs(object) do
newObject[_copy(key)] = _copy(value)
end
return setmetatable(newObject, getmetatable(object))
end
return _copy(object)
end
这个函数使用方法如下:
--记录玩家的信息
self._userInfo = {};
self._userInfo= clone(self._deskUserList._users)
这样就可以解决这个问题。
下面是冒泡时间
。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。
。。。。。。。。。。。。。
。。。。。。。。。。。。
。。。。。。。。。。。
。。。。。。。。。。
。。。。。。。。。
。。。。。。。。
。。。。。。。
。。。。。。
。。。。。
。。。。
。。。
。。
。
阅读全文
0 0
- 讨论深拷贝和浅拷贝问题?
- 深拷贝和浅拷贝使用问题
- 深拷贝和浅拷贝问题
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝 和 浅拷贝
- 浅拷贝和深拷贝
- Kubernetes入门指南:部署一个Node.js Docker应用 — SitePoint
- [声明]Hallmeow's cnblog
- MySQL索引优化
- 剑指offer--二叉树的下一个结点
- 总结
- 深拷贝和浅拷贝问题
- Spring Cloud入门教程(三):声明式服务调用(Feign)
- JAVA项目:简单的银行账户系统1
- 最短路径--昂贵的聘礼
- 数据结构项目-校园导游系统
- HDU2689-树状数组&逆序数|分治-Sort it
- Spring Cloud 中出现的一些坑,记录一下
- 如何选择NTC热敏电阻
- Codeforces 768B Code For 1 (简化版线段树)