表构造器里同一个键写两次,后面的值悄悄覆盖前面——不报错、不警告,配置字段静默丢失;两人各改一行权重配置没删旧行,生效的永远是后写的那个。错误场景:
local cfg = { rate = 10, rate = 50, name = "祖玛" }
print(cfg.rate)
输出 50——rate = 10 那行被静默覆盖,全程没有任何提示。
运行时无法从结果表发现重复(信息已被覆盖),重复检测只能在源码层做:对配置源串做键计数扫描。示例代码如下:
local src = "rate = 10, rate = 50"
local cnt = 0
for _ in string.gmatch(src, "rate%s*=") do
cnt = cnt + 1
end
print(cnt)
输出 2——源码里同名键出现两次,上线前扫描出来打回修改。
三步验证:构造器写重复键,确认无警告且取值为后写值;把权重配置交给两名同学各改一行,复现静默覆盖事故;上线前跑一遍源码键计数扫描,把重复键配置拦在加载之前。
同键覆盖在赋值场景同样成立——对同一状态键多次 setplayvar 只留末次写入,理解"后写覆盖先写"才能设计状态更新。示例代码如下:
setplayvar(actor, 0, "LastMap", "比奇", 0)
setplayvar(actor, 0, "LastMap", "沃玛森林", 0)
print(getplayvar(actor, 0, "LastMap"))
输出 沃玛森林——状态键的本意就是后写覆盖先写;同样的机制,配置键的覆盖是事故,状态键的覆盖是语义。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、一行代码拆解:hp = 10000 + teamN 5000 —— 运镖劫镖的全部骨架:镖车按护送人数增强血量…
【语法】 一、隐蔽陷阱:逐个插入建堆要 n 次上浮;自底向上从末个非叶子节点倒序下沉,一遍线性把乱序表调成合法堆。 二、底层…
【语法】 一、抛坑提问:一个数等于它全部真因子之和就叫真因子和数,6 等于 1 加 2 加 3——判定只需枚举到平方根配对求…
【游戏】 一、一行代码拆解:n = math.floor(have / 5) —— 批量合成的全部骨架:5 个碎片合成 1 …
【游戏】 一、一行代码拆解:if INSURED[actor] then 赔付 end —— 装备保险的全部骨架:死亡掉落判…
【语法】 一、隐蔽陷阱:找第 K 小元素先全量排序再取下标,n log n 浪费在无关排序上;快速选择借用快排分区——每轮只…