从嵌入表Lua中获取值

从嵌入表Lua中获取值,lua,lua-table,Lua,Lua Table,我是Lua的新手,我正在尝试学习如何使用嵌入式表创建函数。我一直在想办法使函数满足表中的特定值 以下是一个表格示例: TestTable = {destGUID1 = {catagory1 = {A=1,B=5,C=3},catagory2 = {A=5,B=3,C=2}},destGUID2 = {catagory1 = {A=1,B=5,C=3},catagory2 = {A=5,B=3,C=2}}} 现在我想为这个表创建一个函数,它只从特定的destGUID中提取值。比如: fu

我是Lua的新手,我正在尝试学习如何使用嵌入式表创建函数。我一直在想办法使函数满足表中的特定值

以下是一个表格示例:

    TestTable = {destGUID1 = {catagory1 = {A=1,B=5,C=3},catagory2 = {A=5,B=3,C=2}},destGUID2 = {catagory1 = {A=1,B=5,C=3},catagory2 = {A=5,B=3,C=2}}}
现在我想为这个表创建一个函数,它只从特定的destGUID中提取值。比如:

function CatInfo(GUID,Cat)
    for i=1, #TestTable do
        if TestTable[i] == GUID then
            for j=1, TestTable[i][GUID] do
                if TestTable[i][GUID][j] == Cat then
                    return TestTable[i][GUID][Cat].A -- returns value "A"
                end
            end
        end
    end
end
因此,当我使用此函数时,我可以执行如下操作:

    CatInfo(destGUID2,catagory1) -- returns "1"

鉴于您的表结构,您不需要进行任何循环;您只需根据GUID和类别从表中返回值:

TestTable = {
  destGUID1 = {catagory1 = {A=1,B=5,C=3},catagory2 = {A=5,B=3,C=2}},
  destGUID2 = {catagory1 = {A=1,B=5,C=3},catagory2 = {A=5,B=3,C=2}}
}
function CatInfo(GUID,Cat)
  return TestTable[GUID][Cat].A
end
print(CatInfo('destGUID2','catagory1'))

这将打印
1
。请注意,
destGUID2
catagory1
需要加引号,因为它们是字符串。

首先,您应该缩进代码和表格。它们的结构不像现在那样可读性好。(还有,你为什么要把糟糕的编程语言称为“LUA”?它可能不是用大写字母来命名的,(因为这被认为是叫喊)。它的正确名称是LUA。)@Benjaminondrea,如果这回答了你的问题,你可以接受答案。因此,使用类似于此的表,我创建了一个函数,它根据事件输入数据。将有许多“destGUID”,大约10个“catagory”,而“A”是一个时间戳,“B”是“C”重置回0之前的计算时间,因此“C”将是“catagory”返回true的次数。每个输入的“destGUID”都是唯一的。所以我的问题是,这个函数是否能够处理许多“destGUID”?当然;只要您具有所描述的结构,它就能够处理不同的GUID值(因为它在函数中没有硬编码)。