[十万个为什么] [lua] 打印table
local function print_r(t)
local print_r_cache = {}
local function sub_print_r(t, indent)
if (print_r_cache[tostring(t)]) then
print(indent .. "*" .. tostring(t))
else
print_r_cache[tostring(t)] = true
if (type(t) == "table") then
for pos, val in pairs(t) do
if (type(val) == "table") then
print(indent .. "[" .. pos .. "] = " .. "{")
-- sub_print_r(val, indent .. string.rep(" ", string.len(pos) + 8))
-- print(indent .. string.rep(" ", string.len(pos) + 6) .. "}")
sub_print_r(val, indent .. string.rep(" ", 4))
print(indent .. string.rep(" ", 0) .. "}")
elseif (type(val) == "string") then
print(indent .. "[" .. pos .. '] = "' .. val .. '"')
else
print(indent .. "[" .. pos .. "] = " .. tostring(val))
end
end
else
print(indent .. tostring(t))
end
end
end
if (type(t) == "table") then
print(tostring(t) .. " {")
sub_print_r(t, string.rep(" ", 4))
print("}")
else
sub_print_r(t, string.rep(" ", 4))
end
end
return print_r