如何制作此功能的函数版本

我用 Lua 编写了一个程序来显示一个表的内容,它也显示了该表中的表的内容

for i in pairs(v) do
    if type(v[i])=="table" then
        for j in pairs(v[i]) do
             if type(v[i][j])=="table" then
                 print("...")
             else
                 print(i,j,v[i][j])
             end
        end
    else
        print(i,v[i])
    end
end

我的问题是,是否可能制作一个版本的函数,可以处理未定义数量的表格内表格,如 {{{1},1},1},显示类似于以下内容?

1 1 1 1

1 2 1

2 1

点赞
用户107090
用户107090

你需要一个递归函数。见 Lua online demo 中的 globals 示例,并且以下是复制的范例。调用 dump 函数,并用你的表代替 _G

-- globals.lua
-- show all global variables

local seen={}

function dump(t,i)
    seen[t]=true
    local s={}
    local n=0
    for k in pairs(t) do
        n=n+1 s[n]=k
    end
    table.sort(s)
    for k,v in ipairs(s) do
        print(i,v)
        v=t[v]
        if type(v)=="table" and not seen[v] then
            dump(v,i.."\t")
        end
    end
end

dump(_G,"")
2016-11-14 09:41:37