lua中打印所以类型功能实现

本人測试 number、string、bool、nil、table嵌套table、userdata没问题 共享一下有什么问题请拍砖 代码例如以下

cclog = function( ... )
local tv = "\n"
local xn = 0
local function tvlinet(xn)
-- body
for i=1,xn do
tv = tv.."\t"
end
end local function printTab(i,v)
-- body
if type(v) == "table" then
tvlinet(xn)
xn = xn + 1
tv = tv..""..i..":Table{\n"
table.foreach(v,printTab)
tvlinet(xn)
tv = tv.."}\n"
xn = xn - 1
elseif type(v) == nil then
tvlinet(xn)
tv = tv..i..":nil\n"
else
tvlinet(xn)
tv = tv..i..":"..tostring(v).."\n"
end
end
local function dumpParam(tab)
for i=1, #tab do
if tab[i] == nil then
tv = tv.."nil\t"
elseif type(tab[i]) == "table" then
xn = xn + 1
tv = tv.."\ntable{\n"
table.foreach(tab[i],printTab)
tv = tv.."\t}\n"
else
tv = tv..tostring(tab[i]).."\t"
end
end
end
local x = ...
if type(x) == "table" then
table.foreach(x,printTab)
else
dumpParam({...})
-- table.foreach({...},printTab)
end
print(tv)
end

使用示比例如以下代码

    local ttt = {23,aa=23,23,
{bbb=23,"dsd",false,nil,
{32,ccc="23dd",
{23,"sdfsdf",
{234,addd="23233jjjjsdOK"}
}
}
},
{dd = "sd",23},
true
} cclog(23,"sdf",ttt,"sdssssf",323223,false)

输出日志例如以下:

Cocos2d: [LUA-print]
23 sdf
table{
1:23
2:23
3:Table{
1:dsd
2:false
4:Table{
1:32
2:Table{
1:23
2:sdfsdf
3:Table{
1:234
addd:23233jjjjsdOK
}
}
ccc:23dd
}
bbb:23
}
4:Table{
1:23
dd:sd
}
5:true
aa:23
}
sdssssf 323223 false
04-27 01:11