当前位置: 首页 > wzjs >正文

一个公司优化需要做多少个网站建设网站的网站首页

一个公司优化需要做多少个网站,建设网站的网站首页,网站建设沈阳公司,浏览器免费大全💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 Lua | 每日一练 (5)题目参考答案浅拷贝深拷贝使用场景…

💢欢迎来到张胤尘的技术站
💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥

文章目录

  • Lua | 每日一练 (5)
    • 题目
    • 参考答案
      • 浅拷贝
      • 深拷贝
      • 使用场景

Lua | 每日一练 (5)

题目

lua 中深拷贝和浅拷贝的区别?如何实现深拷贝?

参考答案

深拷贝和浅拷贝是编程中常见的两种数据复制方式,它们的区别主要在于对数据结构中嵌套内容的处理方式。

下面针对这两种拷贝方式进行详细的梳理。

浅拷贝

浅拷贝是指创建一个新的对象,然后将原对象中的内容根据不同的类型选择不同的处理方式。

  • 如果内容是简单数据类型(如数字、字符串、布尔值),则直接复制值;
  • 如果内容是复杂数据类型(如对象、数组、表等),则只复制其引用(即内存地址),而不是复制其内部结构。

在这里插入图片描述

下面给出代码示例,如下所示:

local original = { a = 1, b = { c = 2 } }
local shallowCopy = {}for k, v in pairs(original) doshallowCopy[k] = v
end-- 修改嵌套表
shallowCopy.b.c = 3
print(original.b.c) -- 3

深拷贝

深拷贝是指创建一个新的对象,并递归地复制原对象中的所有内容,包括嵌套的复杂数据类型。深拷贝会创建完全独立的副本,修改副本中的内容不会影响原对象。

在这里插入图片描述

lua 标准库中没有直接提供深拷贝功能,但可以通过自己编写递归函数实现。例如:

local function deepCopy(original)-- 检查是否为表if type(original) ~= "table" thenreturn originalend-- 创建新表local copy = {}-- 遍历原表的所有键值对for k, v in pairs(original) do-- 递归拷贝值copy[deepCopy(k)] = deepCopy(v)endreturn copy
endlocal original = { a = 1, b = { c = 2, d = { e = 3 } } }
local deepCopyTable = deepCopy(original)deepCopyTable.b.c = 10
print(original.b.c)      -- 2
print(deepCopyTable.b.c) -- 10

还有一点需要注意的是,在处理递归时如果表中存在循环引用(例如 t = {a = 1}; t.b = t),上述简单实现会导致无限递归。

为了避免上述的这种情况,可以在实现中加入一个“已拷贝表”的映射(seen 表),记录已经拷贝过的表,避免重复拷贝。另外如果表有元表,深拷贝时也需要考虑是否需要拷贝元表,以及如何处理元表中的引用。

下面给出一个改进后实现深拷贝的版本,如下所示:

local function deepCopy(original, seen)-- 检查是否为表if type(original) ~= "table" thenreturn originalend-- 检查是否已经拷贝过if seen and seen[original] thenreturn seen[original]end-- 创建新表local copy = {}-- 记录已经拷贝的表seen = seen or {}seen[original] = copy-- 遍历原表的所有键值对for k, v in pairs(original) docopy[deepCopy(k, seen)] = deepCopy(v, seen)end-- 拷贝元表local mt = getmetatable(original)if mt thensetmetatable(copy, deepCopy(mt, seen))endreturn copy
endlocal t = { a = 1 }
t.b = t
local copy = deepCopy(t)
print(copy.b == copy) -- true

使用场景

  • 浅拷贝:当对象的结构简单,并且不包含嵌套的复杂数据类型时可以使用浅拷贝,另外当需要快速复制对象且不介意共享嵌套内容时也适用浅拷贝。

  • 深拷贝:当对象结构复杂,例如包含嵌套的复杂数据类型时且使用过程中需要完全独立的副本,修改副本不影响原对象时需要使用深拷贝。

🌺🌺🌺撒花!

如果本文对你有帮助,就点关注或者留个👍
如果您有任何技术问题或者需要更多其他的内容,请随时向我提问。

在这里插入图片描述

http://www.dtcms.com/wzjs/395963.html

相关文章:

  • 如何利用源代码做网站怎么样做一个自己的网站
  • wordpress域名临时域名广州市网络seo外包
  • 网站推广工作职责百度广告电话号码是多少
  • 别人抄袭网站设计怎么办seo文章是什么意思
  • 淘客网站要备案市场调研报告怎么写的
  • 美食网站html模板今日热搜
  • 网站衣服模特怎么做百度一下你就知道123
  • 网站运行平台包括百度浏览器在线打开
  • 北京三屏网站制作网络营销有哪些推广平台
  • element做模板wordpress百度关键词优化公司哪家好
  • 网站后台编辑框无法显示效果最好的推广软件
  • 建设银行网站官方网站河源市企业网站seo价格
  • 郑州手机网站制作公司福州网站seo公司
  • wordpress 建站简单吗长春网站制作公司
  • iis搭建网站教程win10淘宝关键词排名
  • 广州 环保 凡人网站建设百度识图网页版 在线
  • 销售网站怎么做的线上营销渠道主要有哪些
  • 镜像网站是如何做的站长工具ip地址
  • 湘潭网站建设公司百度旗下推广平台有哪些
  • 网络平台开展职业培训网站建设营销推广方案包括哪些内容
  • 优化网站浏览量怎么看seo客服
  • 沙井网站开发网络运营是做什么的
  • 沈阳做网站优化的公司哪家好搜索引擎关键词优化
  • 医院网站设计与实现软件外包公司有前途吗
  • 广东石油化工建设集团公司网站培训机构需要什么资质
  • 高端网站建设内容百度免费推广方法
  • 北京大型网站制作公司seo网站推广目的
  • 表格网站怎么做防控措施持续优化
  • 淮南家政网站建设地址seo投放营销
  • 网站主机方式seo网站设计工具