lua table打印

来源:互联网 发布:linux关闭oracle服务 编辑:程序博客网 时间:2024/06/06 14:24
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 szRetend
0 0
原创粉丝点击