• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Lua 打印一个能输出table的函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

要求有一个table,里面有嵌套的table也能输出,输出后的代码复制到程序中运行也不报错

例如给出的table如下:

local pets = {
  ["cat"] = {
    ["count"] = 1,
    ["names"] = {
    "2", 
    "3",
    },
  },
  ["dog"] = {
    ["count"] = 20,
    ["names"] = {
    "233", 
    "34",
    },
  },
}

下面是我贴出的代码,注释方面是我自己的理解可能有点乱

测试table如下:

运行结果如下:

将运行结果带入原table中,程序输出一样未报错。

以下是源代码:

local key = ""

function PrintTable(table, level)      --table是表名,level是嵌套表的层级
    level = level or 1                   --层级不为nil则返回层级,最少为1
    local suo_Jin = ""                    --缩进
    --每一个层级缩进两格
    for i = 1, level do
        suo_Jin = suo_Jin.."  "
    end    
    --遇到不为空字符串
    if key ~= "" then
        --if level == 1
        print(suo_Jin.."[".."\""..key.."\"".."]".." ".." = ".." ".."{")
    --遇到空的字符串
    else
        print(suo_Jin.."{")
    end
    key = ""
 
    for k, v in pairs(table) do
        --如果是嵌套的table
        if type(v) == "table" then            
            key = k
            PrintTable(v, level + 1)
            --在判断是不是string类型
            elseif type(v) == "string" then
                local value = string.format("%s\"%s\",", suo_Jin.."  ", tostring(v))
                print(value)
                --index = index + 1
        --不是嵌套的table
        else
            --让三个量按照给定的格式输出
            local value = string.format("%s".."[".."\"".."%s".."\"".."]".." = ".."%s" , suo_Jin .. "  ", tostring(k), tostring(v).." ,")
            print(value)
            --index = index + 1
        end            
    end
    --先打印一下level的值,用level来判断是不是table最后一个值
    --print("2222222222222222222  level = " .. level)
    if level ~= 1 then
        print(suo_Jin.."},")
    else
        print(suo_Jin.."}")
    end
    
end


local pets = {
  ["cat"] = {
    ["count"] = 1,
    ["names"] = {
    "2", 
    "3",
    },
  },
  ["dog"] = {
    ["count"] = 20,
    ["names"] = {
    "233", 
    "34",
    },
  },
}

PrintTable(pets)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
redis命令和lua实现分布式锁发布时间:2022-07-22
下一篇:
luastring库发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap