【问题标题】:Obtain values from embedded tables Lua从嵌入式表 Lua 中获取值
【发布时间】:2015-03-26 07:28:08
【问题描述】:

我是 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"

【问题讨论】:

  • 首先,您应该缩进您的代码以及表格。它们的结构按原样可读性不好。 (另外,你为什么将糟糕的编程语言称为“LUA”?它可能明确不全大写,as stated by e. g. Wikipedia [因为这被认为是大喊大叫]。它的正确名称是 Lua。)跨度>

标签: lua lua-table


【解决方案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。请注意,destGUID2catagory1 需要用引号括起来,因为它们是字符串。

【讨论】:

  • @BenjaminCondrea,如果这回答了您的问题,您可以接受答案。
  • 因此,使用与此类似的表,我制作的函数根据事件输入数据。会有很多“destGUID”,大概有10个“category”,“A”是时间戳,“B”是“C”重置回0之前计算的时间,所以“C”就是“category”的次数"返回真。每个输入的“destGUID”都是唯一的。所以我的问题是,这个函数能处理很多“destGUID”吗?
  • 当然;只要您拥有描述的结构,它将能够处理不同的 GUID 值(因为它没有在函数中硬编码)。
猜你喜欢
  • 2020-05-05
  • 2014-08-27
  • 2015-05-21
  • 2017-05-14
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
相关资源
最近更新 更多