kehuadong

[十万个为什么] [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

 

posted on 2024-07-22 18:21  kehuadong  阅读(1)  评论(0编辑  收藏  举报

导航