Lua 如何打印表格';表中的内容是什么?[卢阿]

Lua 如何打印表格';表中的内容是什么?[卢阿],lua,lua-table,Lua,Lua Table,我想做的只是在一个表中打印一个表的内容。例如: local stats = { table1 = { tTable1 = { data = 1 }, tTable2 = { data2 = 2 }, tTable3 = { data3 = 3 }, } } 我并不真正关心表1或所有的TTable,而是关心数据变量中的信息。我如何打印它们 这是我真正的代码片段: local s

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

local stats = {
  table1 = {
    tTable1 = 
    {
      data = 1
    },
    tTable2 = 
    {
      data2 = 2
    },
    tTable3 =
    {
      data3 = 3
    },
  }
}
我并不真正关心表1或所有的TTable,而是关心数据变量中的信息。我如何打印它们

这是我真正的代码片段:

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”的区域和下面的数字之外。

递归表遍历适用于这种情况:

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

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

它将完全取决于实际的表。如果示例不是真实的表,您可以发布真实表的示例吗?使用stats.table1.tTable3.data3为每个值编制索引是很困难和细致的,但是如果它们都只是“数据”,您可以这样使用:
对于键,成对的值(stats.table1)确实打印(value.data)end
,但是如果可能,您可以在表声明中省略键(
tTable1={1}
),然后打印(值[1]). 试试看是的,以我的例子来说,我使用了data1、data2和data3,但我的实际表中确实有一些类似于“data”的东西。至于真实表格的一个例子,我现在不能做,因为我在打电话。当我回到我的电脑,我一定会尝试这个!我添加了一段代码。好的,如果您只想在每个较大的表中获取第二个表的第二个值,您可以对k使用
,v成对(stats)
并打印(v[2][2])。这里有一些应该告诉你我的意思。我实际上把“pairs”改成了“ipairs”,因为完整的表是一个索引值表。除此之外,它似乎起了作用。我不确定我是否能把一条评论作为答案,(我是新来的),但谢谢你!