Lua 如何输出树状结构的table?

在 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

这样,你就可以清晰地看到表的层次结构了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值