把table传进去
function serialize(t)
local mark={}
local assign={}
local function table2str(t, parent)
mark[t] = parent
local ret = {}
for f,v in pairs(t) do
local k = type(f)=="number" and "" ..f.. "" or f
local dotkey = parent..(type(f)=="number" and k or "."..k)
local t = type(v)
if t == "userdata" or t == "function" or t == "thread" or t == "proto" or t == "upval" then
--ignore
elseif t == "table" then
if mark[v] then
table.insert(assign, dotkey.."="..mark[v])
else
table.insert(ret, string.format("%s:%s", '\"' .. k .. '\"', table2str(v, dotkey)))
end
elseif t == "string" then
table.insert(ret, string.format("%s:%q", '\"' .. k .. '\"', v))
elseif t == "number" then
if v == math.huge then
table.insert(ret, string.format("%s:%s", '\"' .. k .. '\"', "math.huge"))
elseif v == -math.huge then
table.insert(ret, string.format("%s:%s", '\"' .. k .. '\"', "-math.huge"))
else
table.insert(ret, string.format("%s:%s", '\"' .. k .. '\"', tostring(v)))
end
else
table.insert(ret, string.format("%s:%s", '\"' .. k .. '\"', tostring(v)))
end
end
return "{"..table.concat(ret,",").."}"
end
if type(t) == "table" then
return string.format("%s%s", table2str(t,"_"), table.concat(assign," "))
else
return tostring(t)
end
end