lua - 如何在表格中打印表格的内容?[卢阿]
问题描述
我想做的只是在表格中打印表格的内容。例如:
local stats = {
table1 = {
tTable1 =
{
data = 1
},
tTable2 =
{
data2 = 2
},
tTable3 =
{
data3 = 3
},
}
}
我并不真正关心 table1 或所有 tTables,而是数据变量中的信息。我怎样才能打印它们?
这是我真实代码的片段:
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
请记住,未定义表中非索引值的顺序
推荐阅读
- kubernetes - 为什么既需要活力又需要准备
- python - 具有高级计算功能的 Keras 自定义层
- javascript - 未捕获的类型错误:无法解构“未定义”或“空”的属性“名称”
- javascript - Material-UI TextField 类型日期不适用于 IE
- android - 使用 UsbManager 在 Android 中取消打印作业
- java - 设置数据到微调器,并在微调器中发送选定数据的密钥
- java - 将 ContainerResponseFilter 添加到码头服务器
- java - 获取在 int 数组 Java 中具有重复项的元素
- mysql - mysql:创建触发器时无法识别新关键字
- javascript - 如何使用 python 编码读取特定网站的控制台日志(例如,ok、connected.. 等消息)?