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

如何将一个字典的键值对应用到另一个Lua字典中?

如何在Lua中深度合并两个嵌套表?

你需要实现深度合并逻辑,因为你的表存在嵌套结构(比如Settings是子表),直接赋值会替换整个子表,而不是合并子表内的键值对。以下是具体实现方案:

递归合并函数

编写一个递归函数,遍历源表的所有键,若遇到嵌套表则继续递归合并,否则直接覆盖目标表的对应值:

local function mergeTables(target, source)
    for key, value in pairs(source) do
        -- 如果源值是表,且目标对应值也是表,就递归合并
        if type(value) == "table" and type(target[key]) == "table" then
            mergeTables(target[key], value)
        else
            -- 否则直接覆盖目标表的键值
            target[key] = value
        end
    end
    return target
end

使用示例

将globalData合并到globalDefault中:

local globalDefault = {
    ["LastPlayed"] = "",
    ["Grades"] = {
        ["Grade"] = 1,
        ["Level"] = 1
    },
    ["Challenge"] = {
        ["History"] = {}
    },
    ["Settings"] = {
        ["ScrollFrameHitbox"] = false
    }
}

local globalData = {
    ["Settings"] = {
        ["ScrollFrameHitbox"] = true
    }
}

-- 执行合并
mergeTables(globalDefault, globalData)

-- 验证结果
print(globalDefault.Settings.ScrollFrameHitbox) -- 输出 true

执行后globalDefault的结构就会和你期望的一致:保留所有原有键,仅被globalData覆盖的嵌套键值会更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:52:03