【原创】lua函数--克隆函数clone()
其他路径:
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架