如何制作这个的功能版本

时间:2016-11-14 01:51:41

标签: lua

我在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

1 个答案:

答案 0 :(得分:1)

你需要一个递归函数。请参阅下面转载的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,"")