CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
Lua基础Table内存引用

表是引用:改了别人,怎么就跟着变了

2026-10-18 00:25 作者:吴大圣老师 Lua基础Table内存引用

「我只改了 b,a 怎么变了?」——这是表引用问题的标准嚎叫。今天把钥匙和锁彻底讲清。

本课互动训练:专属动画 + 选择题测验。 打开 第 09 课 · 动画闯关,先看动画,再完成 3 道选择题。
配套动画实验室:堆 / 栈 / 引用 / # 号可点可演。 打开 Lua 表 · 堆栈内存动画实验室,对照本文点「播放当前演示」。

一、赋值 = 共用同一把钥匙

lua
local a = {1, 2, 3, 4}
local b = a
b[3] = 100
print(a[3])  --> 100

a、b 指向同一块内存。改 b 就是改 a。画图理解:

text
内存堆:  [1, 2, 100, 4]
          ^       ^
          |       |
          a       b   (两把钥匙,一扇门)

二、什么时候是拷贝

lua
local x = 10
local y = x
y = 20
print(x)  --> 10

数字、字符串赋值是值拷贝;表是引用。同一句 =,两种命运,类型决定的。

三、浅拷贝:只复制第一层

lua
local function shallow_copy(t)
    local r = {}
    for k, v in pairs(t) do
        r[k] = v
    end
    return r
end

local a = {1, 2, {9, 9}}
local b = shallow_copy(a)
b[1] = 100
print(a[1])      --> 1   (第一层互不影响)
b[3][1] = 5
print(a[3][1])   --> 5   (内层还是同一张表)

第一层复制了,里层仍共享。要完全独立,得递归深拷贝(后续进阶课讲)。

四、函数传表也会共用

lua
local function push(t, v)
    t[#t + 1] = v
end

local bag = {}
push(bag, "木剑")
print(bag[1])  --> 木剑

函数里改表,外面的表跟着变。好处是省拷贝、快;坏处是不小心就污染调用方数据。

五、工程上的自我保护

  • 明确命名:bag、bag_view、bag_copy,名字暴露意图
  • 不想被改的配置,用时拷贝一份再改
  • 调试用「打印地址等价性」:print(a == b) 看是不是同一只表

六、为什么这很重要

版本越大,表传得越远。今天这个引用没搞清,明天就是「全服装备被串号」。内存观不是装酷,是保命。

今日练习:写 b = a 改 b 观察 a;再写一个 shallow_copy,验证第一层独立、第二层仍共享。


课堂互动训练

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

Lua实战NPC

NPC 界面与 GM 小工具:say / button / link 传参

会判断了,就能做会回话的 NPC。今天拼一个简易 GM 工具界面。 一、用 say 吐出界面 客户端编辑器 Ctrl + F…

2026-10-18 01:01 吴大圣老师
Lua基础逻辑运算

与或非:and / or / not 与短路真相

与或非听起来玄,其实就是三张通行证。 一、and(与)= 过安检 机票 + 身份证 ,少一样不让过。后面还能无限加条件。 二…

2026-10-18 01:01 吴大圣老师
Lua基础判断

判断分支实战:if / elseif / else 与防卫语句

判断 = 比较 + 分支。今天把三种 if 写法、以及工程里最好用的「防卫语句」一次练透。 一、三种判断结构 elseif …

2026-10-18 01:01 吴大圣老师
Lua基础Table

从表走到迭代:pairs/ipairs 预告与三大坑

表会建、会取、会增删改查,最后一环是 遍历 。本篇先把坑标出来,下节课正式拆迭代器。 本课互动训练 :专属动画 + 选择题测…

2026-10-18 00:25 吴大圣老师
Lua基础Table

表是引用:改了别人,怎么就跟着变了

「我只改了 b,a 怎么变了?」——这是表引用问题的标准嚎叫。今天把钥匙和锁彻底讲清。 本课互动训练 :专属动画 + 选择题…

2026-10-18 00:25 吴大圣老师
Lua实战Table

玩家背包实战:用表搭一个角色数据库

理论够了,进游戏干一票:用一张表,存下角色的名、级、包、属性,并用它驱动「给我装备」。 本课互动训练 :专属动画 + 选择题…

2026-10-18 00:25 吴大圣老师