其他路径:
CSDN: https://blog.csdn.net/wodehao0808
微信公众号:程序喵星人
更多资源和视频教程,QQ:1902686547
--[[ -- 深度克隆一个值 -- example: -- 1. t2是t1应用,修改t2时,t1会跟着改变 local t1 = { a = 1, b = 2, } local t2 = t1 t2.b = 3 -- t1 = { a = 1, b = 3, } == t1.b跟着改变 -- 2. clone() 返回t1副本,修改t2,t1不会跟踪改变 local t1 = { a = 1, b = 2 } local t2 = clone( t1 ) t2.b = 3 -- t1 = { a = 1, b = 3, } == t1.b不跟着改变 -- @param object 要克隆的值 -- @return objectCopy 返回值的副本 --]] function clone( object ) local lookup_table = {} local function copyObj( 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[copyObj( key )] = copyObj( value ) end return setmetatable( new_table, getmetatable( object ) ) end return copyObj( object ) end ———————————————— 版权声明:本文为CSDN博主「公众号:程序喵星人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/wodehao0808/article/details/115364159
|
请发表评论