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

Lua中如何根据输入键名从两个同类型表中选出对应的目标表

Lua 根据输入键名匹配对应目标表的实现方法

方案1:查找表实现(推荐,易扩展)

  • 核心逻辑:预先构造键名到目标表、表名的映射关系,输入后直接索引匹配,性能更高,后续新增匹配表仅需更新映射表即可
-- 已知表定义
A = {
    name1 = {}
}
B = {
    name2 = {}
}

-- 构造查找映射
local lookup_map = {
    name1 = {
        target = A,
        table_name = "A"
    },
    name2 = {
        target = B,
        table_name = "B"
    }
}

-- 替换为实际输入值
local input_key = "name1"

local matched = lookup_map[input_key]
if matched then
    -- 输出匹配的表名
    print("匹配到的表名称:" .. matched.table_name)
    -- 可直接操作目标表
    local target_table = matched.target
else
    print("未匹配到符合要求的表")
end

方案2:分支判断实现(适合少量表的临时场景)

  • 核心逻辑:逐个判断输入键是否存在于目标表中,匹配到即返回对应结果
local input_key = "name2"
local target_table, table_name

if A[input_key] ~= nil then
    target_table = A
    table_name = "A"
elseif B[input_key] ~= nil then
    target_table = B
    table_name = "B"
end

if table_name then
    print("匹配到的表名称:" .. table_name)
else
    print("无匹配表")
end

注意事项

如果目标表配置了__index元方法,为了避免元表逻辑干扰键存在性判断,可以用rawget()判断键是否真实存在于表自身,示例:if rawget(A, input_key) ~= nil then


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:24:04