Lua:如何改进特定表深度的打印表

发布于 2025-01-17 00:15:00 字数 858 浏览 0 评论 0原文

这是我的自定义函数:

function scope(tbl, depth)
    if (depth > 0) then
        for k, v in pairs(tbl) do
            if (type(v) ~= "table") then
                print(v)
            else
                scope(v, depth - 1)
            end
        end
    end
end

这是用法: let

stuff = {
    fruit = {
        yellow = {
            "Banana"
        }, -- depth = 3
        red = {
            "Apple"
        } -- depth = 3
    },
    city = {
        "Toronto"
    }, -- depth = 2
    name = {
        "Claudia"
    } -- depth = 2
}

scope(stuff, 2) returns

Toronto
Claudia

否则, scope(stuff, 3) returns

Banana
Apple
Toronto
Claudia

建议如何改进它?如果像这里一样,我指定深度值为 1 或大于 3 的数字(表的深度),则可能会插入一些显示 nil 的代码。

This is my custom function:

function scope(tbl, depth)
    if (depth > 0) then
        for k, v in pairs(tbl) do
            if (type(v) ~= "table") then
                print(v)
            else
                scope(v, depth - 1)
            end
        end
    end
end

This is the usage: let

stuff = {
    fruit = {
        yellow = {
            "Banana"
        }, -- depth = 3
        red = {
            "Apple"
        } -- depth = 3
    },
    city = {
        "Toronto"
    }, -- depth = 2
    name = {
        "Claudia"
    } -- depth = 2
}

scope(stuff, 2) returns

Toronto
Claudia

Otherwise, scope(stuff, 3) returns

Banana
Apple
Toronto
Claudia

Advice on how to improve it? Maybe insert some code that displays nil if, as here, I specify depth value of 1 or a number greater than 3 (the depth of the table).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文