【问题标题】:How to print a table's contents within a table? [Lua]如何在表格中打印表格的内容? [卢阿]
【发布时间】:2020-04-18 07:18:40
【问题描述】:

我想做的只是在表格中打印表格的内容。例如:

local stats = {
  table1 = {
    tTable1 = 
    {
      data = 1
    },
    tTable2 = 
    {
      data2 = 2
    },
    tTable3 =
    {
      data3 = 3
    },
  }
}

我并不真正关心 table1 或所有 tTables,而是数据变量中的信息。如何打印它们?

这是我真实代码的sn-p:

local stats = {
  [1] = { 
    [1] = { 
      [1] = 1,
      [2] = -1,
      [3] = -1,
      ["n"] = 3,
    },
    [2] = { 
      [1] = nuclearcraft:cooler,
      [2] = 10,
      ["n"] = 2,
    },
    ["n"] = 2,
  },
  [2] = { 
    [1] = {
      [1] = 2,
      [2] = -1,
      [3] = -1,
      ["n"] = 3,
    },
    [2] = { 
      [1] = nuclearcraft:cell_block,
      [2] = 0,
      ["n"] = 2,
    },
    ["n"] = 2,
  },
  [3] = {
    [1] = {
      [1] = 3,
      [2] = -1,
      [3] = -1,
      ["n"] = 3,
    },
    [2] = { 
      [1] = nuclearcraft:cooler,
      [2] = 10,
      ["n"] = 2,
    },
    ["n"] = 2,
  },
}

这段代码实际上持续的时间比这长一点。在真正的代码中,除了上面写着“nuclearcraft”的区域和它下面的数字之外,我不关心任何数据。

【问题讨论】:

  • 这完全取决于实际表。如果示例不是真实表,您可以发布真实表的示例吗?使用 stats.table1.tTable3.data3 索引每个值会很困难和细致,但如果它们都只是“数据”,你可以像这样使用pairsfor key,value in pairs(stats.table1) do print(value.data) end 更好的是,你可以省略其中的键如果可能,表声明 (tTable1={1}) 并执行 print(value[1])。试试看lua.org/cgi-bin/demo
  • 是的,在我的示例中,我使用了 data1、data2 和 data3,但在我的真实表中确实有类似于“数据”的内容。至于真正的桌子的例子,我现在无法做到,因为我在我的手机上。当我回到我的电脑前,我一定会试试这个!
  • 我添加了我的代码的 sn-p。
  • 好的,所以如果您只想在每个较大的表中获取第二个表的第二个值,您可以使用 for k,v in pairs(stats) 和 print(v[2][2])。这里有一些 code 应该能告诉你我的意思。
  • 我实际上将“pairs”更改为“ipairs”,因为整个表是一个索引值表。除此之外,它似乎奏效了。我不确定是否可以将评论标记为答案,(我很新)但谢谢!

标签: lua lua-table


【解决方案1】:

递归表遍历适合这种情况:

local function TablePrint(t)
     for k,v in pairs(t)  do
         if type(v)=="table" then
            print(k)
            TablePrint(v)
         else 
            print('\t',k,v)
         end
     end      
end
TablePrint(stats)

结果:

table1
tTable3
        data3   3
tTable2
        data2   2
tTable1
        data    1

请记住,表中非索引值的顺序没有定义

【讨论】:

    猜你喜欢
    • 2020-04-21
    • 2017-01-12
    • 2015-03-25
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多