在 Lua 中,要输出一个树状结构的 table(表),你需要遍历这个 table 并递归地打印每个元素。这里有一个简单的例子来说明如何实现这样的功能:
function print_table(t, indent)
-- 如果没有提供缩进,默认为0
indent = indent or 0
-- 遍历 table 中的每一个键值对
for k, v in pairs(t) do
-- 如果值也是一个 table,则递归打印
if type(v) == 'table' then
-- 打印当前层级的键
print(string.rep(' ', indent) .. k .. ":")
-- 递归调用自身,并增加缩进
print_table(v, indent + 1)
else
-- 如果值不是 table,则直接打印
print(string.rep(' ', indent) .. k .. ": " .. v)
end
end
end
-- 示例 table
local tree = {
root = {
child1 = {
grandchild1 = "data1",
grandchild2 = "data2"
},
child2 = "data3",
child3 = {
grandchild1 = {
greatgrandchild1 = "data4",
greatgrandchild2 = "data5"
},
grandchild2 = "data6"
}
},
leaf = "data7"
}
-- 输出 tree
print_table(tree)
这段代码定义了一个名为 print_table
的函数,它接受两个参数:一个是你要打印的 table,另一个是表示当前层级缩进的整数。如果 v
是一个 table,那么它会递归地调用 print_table
函数,并增加缩进;如果不是 table,那么它将直接打印键和值。
当你运行这段代码时,它将输出如下格式的树状结构:
root:
child1:
grandchild1: data1
grandchild2: data2
child2: data3
child3:
grandchild1:
greatgrandchild1: data4
greatgrandchild2: data5
grandchild2: data6
leaf: data7
这样,你就可以清晰地看到表的层次结构了。