You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用另一张Lua表中的值更新目标Lua表?

Lua 实现类似 Python dict.update() 的表更新功能

Lua 标准库中并没有内置直接对应 Python dict.update() 的表更新函数,但你可以自己写一个极简的实现来满足需求——遍历差异表的所有键,将对应的值覆盖到目标表中,同时保留目标表原有的未指定键值。

完整示例代码

-- 假设你已经有第三方库提供的deepcopy函数
local t1 = {
  name = "alfa",
  weight = 10,
  height = 5,
  speed = 4,
  price = 100,
}

local t2_diff = {
  name = "beta",
  weight = 20,
  speed = 6,
}

-- 深拷贝得到t2
local t2 = deepcopy(t1)

-- 实现update函数
local function table_update(target, diff)
  for k, v in pairs(diff) do
    target[k] = v
  end
end

-- 更新t2
table_update(t2, t2_diff)

-- 验证结果:t2的name、weight、speed被替换,height、price保留原值
print(t2.name)    -- 输出 beta
print(t2.height)  -- 输出 5
print(t2.price)   -- 输出 100

补充说明

  • 这个table_update函数会直接修改目标表(这里是t2),和Python的dict.update()行为一致。
  • 如果差异表中存在值为nil的键,执行后目标表中对应键会被移除(因为Lua表中键值为nil等同于不存在),如果需要保留原键(即使差异表传nil),可以在函数里加判断:if v ~= nil then target[k] = v end。

内容的提问来源于stack exchange,提问作者pepoluan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:04:59