要求有一个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)
|
请发表评论