copy深度拷贝Table和拷贝表格lua

普通拷贝table

--拷贝表格
 local function tableCopy(tb) 
   local copy={} 
   for k,v in ipairs(tb) do 
     if type(v)=="table" then 
       for m,n in ipairs(v) do 
       copy[k][m]=n 
       end 
     else
     copy[k]=v
       return copy 
     end

深层拷贝table

--深度拷贝Table

  function DeepCopy(obj) 

   local InTable={} 

     local function Func(obj)

      --判断表中是否有表    

      if type(obj)~="table" then return obj end    

       local NewTable={} InTable[obj]=NewTable 

       --若表中有表,则先把表给InTable,再用NewTable去接收内嵌的表     

         for k,v in pairs(obj) do 

           --把旧表的key和Value赋给新表   

           NewTable[Func(k)]=Func(v) 

         end      

           return setmetatable(NewTable, getmetatable(obj))

           --赋值元表

     end

           return Func(obj) 

           --若表中有表,则把内嵌的表也复制了

end

  欢迎大家来学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值