lua深拷贝一个table
发布日期:2021-06-30 19:41:01 浏览次数:3 分类:技术文章

本文共 600 字,大约阅读时间需要 2 分钟。

当我们把一个table赋值给一个对象a的时候,其实是把引用赋值给它,所以我们改变这个对象a,其实等价于改变了table本身。我们想要完全得到一个table的副本的话,就需要进行深拷贝。

-- table深拷贝接口function DeepCopy(t)    if nil == t then return nil end    local res = {
} for k,v in pairs(t) do if 'table' == type(v) then res[k] = DeepCopy(v) else res[k] = v end return resend

-- 构造一个tablelocal a = {
name = 'linxinfa', hobby = 'guitar'}-- 深拷贝a,赋值给blocal b = DeepCopy(a)-- 修改b,并不影响a本身b.hobby = 'basketball'print(a.hobby) -- 输出guitar-- a赋值给c,其实c就等价于a,是a的引用local c = a-- 修改c,等价于直接修改了ac.hobby = 'basketball'print(a.hobby) -- 输出basketball

转载地址:https://linxinfa.blog.csdn.net/article/details/88390724 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:字体裁剪,精简字体,字体瘦身:FontSubsetGUI,FontCreator,FontPruner
下一篇:Unity的动画重新播放/暂停/继续播放(Animation/Animator)

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月25日 15时48分29秒