Lua:如何将表中的一行复制到另一个表?
2014-7-5 7:1:6
收藏:0
阅读:127
评论:1
我试图将一个表的一行复制到另一个表中。这是我第一次这样做,所以就像理所当然的那样,我只是这样做了:
table.insert(table_destination[l], table_origin[l])
这个方法可以正常工作,但是当我修改了table_origin中的行时,table_destination也会改变!
我在Google中搜索了一下,发现了一些关于深拷贝和浅拷贝的文章。我对这方面不是很有经验,所以想寻求帮助。
我怎样才能将一个表的一行复制到另一个表中,以便我可以独立地对两个表进行更改操作?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
Lua 中的表格是按引用传递的。你需要实现类似于
shallowcopy的方法来创建一个与其他表格相同的新表格。function shallowcopy(t) local t2 = {} for k, v in pairs(t) do t2[k] = v end return t2 end table.insert(table_destination[l], shallowcopy(table_origin[l]))你也可以实现
deepcopy函数,它也会递归地复制所有子表格。注意:由于可能存在循环引用和/或不属于本表格的子表格,这可能是危险的。此函数假定表格“拥有”所有子表格,而不仅仅是引用它们。function deepcopy(t) if type(t) ~= 'table' then return t end local t2 = {} for k, v in pairs(t) do t2[k] = deepcopy(v) end return t2 end table.insert(table_destination[l], deepcopy(table_origin[l]))这两个简单的代码片段并不处理诸如复制元表、可能存在的
__pairs元方法、用作键的表格等等的情况。你可以在 这里 或 这里 找到更好(或更复杂)的表格复制实现。