function table.tostring(t, forStr, tPt)
if type(t) == "string" or type(t) == "number" then
return t
elseif type(t) ~= "table" then
return type(t)
end
local oForStr = forStr or ""
local cForStr = forStr and forStr .. "\t" or "\t"
local szRet = forStr and "{\n" or "\n{\n"
local function formatPrint(key, value)
local function dealWithKey()
if "number" == type(key) then
szRet = szRet .. cForStr .. "[" .. key .. "]" .. " = "
elseif "string" == type(key) then
szRet = szRet .. cForStr .. "[\"" .. key .. "\"]" .. " = "
elseif "table" == type(key) then
if key == t then
szRet = szRet .. cForStr .. "[self]" .. " = "
else
szRet = szRet .. cForStr .. "[" .. table.tostring(key, cForStr) .. "]" .. " = "
end
else--if "userdata" == type(key) then
szRet = szRet .. cForStr .. "[" .. type(key) .. "]" .. " = "
end
end
local function dealWithValue()
if "number" == type(value) then
szRet = szRet .. value .. ",\n"
elseif "string" == type(value) then
szRet = szRet .. "\"" .. value .. "\"" .. ",\n"
elseif "table" == type(value) then
if value == t then
szRet = szRet .. "self" .. ",\n"
else
szRet = szRet .. table.tostring(value, cForStr, {t}) .. ",\n"
end
elseif "boolean" == type(value) then
szRet = szRet .. (value and "true" or "false") .. ",\n"
else--if "userdata" == type(value) then
szRet = szRet .. type(value) .. ",\n"
end
end
dealWithKey()
dealWithValue()
end
table.foreach(t, formatPrint)
szRet = szRet .. oForStr .. "}"
return szRet
end
lua table打印
最新推荐文章于 2022-11-14 15:40:46 发布