Lua   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了打印表数据改进版大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
-------------------------------------------------------------------
-- This library defines table_print(tb),table_toString(tb) for 
-- prinTing table data
-------------------------------------------------------------------

local function _list_table(tb,table_list,level)
    local ret = ""
    local indent = String.rep(" ",level*4)

    for k,v in pairs(tb) do
        local quo = type(k) == "String" and "\"" or ""
        ret = ret .. indent .. "[" .. quo .. toString(k) .. quo .. "] = "

        if type(v) == "table" then
            local t_name = table_list[v]
            if t_name then
                ret = ret .. toString(v) .. " -- > [\"" .. t_name .. "\"]\n"
            else
                table_list[v] = toString(k)
                ret = ret .. "{\n"
                ret = ret .. _list_table(v,level+1)
                ret = ret .. indent .. "}\n"
            end
        elseif type(v) == "String" then
            ret = ret .. "\"" .. toString(v) .. "\"\n"
        else
            ret = ret .. toString(v) .. "\n"
        end
    end

    local mt = getmetatable(tb)
    if mt then 
        ret = ret .. "\n"
        local t_name = table_list[mt]
        if t_name then
            ret = ret .. toString(mt) .. " -- > [\"" .. t_name .. "\"]\n"
        else
            ret = ret .. indent .. "<metatable> = {\n"
            ret = ret .. _list_table(mt,level+1)
            ret = ret .. indent .. "}\n"
        end
        
    end

   return ret
end

-------------------------------------------------------------------
-- Public functions
-------------------------------------------------------------------

function table_toString(tb)
    local ret = " = {\n"
    local table_list = {}
    table_list[tb] = "Root Table"
    ret = ret .. _list_table(tb,1)
    ret = ret .. "}"
    return ret
end

function table_print(tb)
    if type(tb) ~= "table" then
        error("Sorry,it's not table,it is " .. type(tb) .. ".")
    end
    print(toString(tb) .. table_toString(tb))
end

-------------------------------------------------------------------
-- For test
-------------------------------------------------------------------

local test_table_2 = {
    print,}

local test_table_1 = {
    12,22.5,true,infor = {
        name = "Jack",age = 26,lifeexp = {
            ["1986"] = "Both",["2013"] = "Work in TenCET",["2015"] = "Get married"
        },wife = "Lucy"
    },"Hello test",recu_table = test_table_2,["2"] = 13
}

test_table_2.recu_table = test_table_1

local metatable = {
    __index = test_table_2,__add = function(a,b) return 0 end
}

setmetatable(test_table_1,metatablE)

function table_test_lib()
    table_print(test_table_1)
end

大佬总结

以上是大佬教程为你收集整理的打印表数据改进版全部内容,希望文章能够帮你解决打印表数据改进版所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: