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

来源:互联网 发布:未提交行1中的数据 编辑:程序博客网 时间:2024/06/06 14:02

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

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

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. cclog = function( ... )  
  2.     local tv = "\n"  
  3.     local xn = 0  
  4.     local function tvlinet(xn)  
  5.         -- body  
  6.         for i=1,xn do  
  7.             tv = tv.."\t"  
  8.         end  
  9.     end  
  10.   
  11.     local function printTab(i,v)  
  12.         -- body  
  13.         if type(v) == "table" then  
  14.             tvlinet(xn)  
  15.             xn = xn + 1  
  16.             tv = tv..""..i..":Table{\n"  
  17.             table.foreach(v,printTab)  
  18.             tvlinet(xn)  
  19.             tv = tv.."}\n"  
  20.             xn = xn - 1  
  21.         elseif type(v) == nil then  
  22.             tvlinet(xn)  
  23.             tv = tv..i..":nil\n"  
  24.         else  
  25.             tvlinet(xn)  
  26.             tv = tv..i..":"..tostring(v).."\n"   
  27.         end  
  28.     end  
  29.     local function dumpParam(tab)  
  30.         for i=1, #tab do    
  31.             if tab[i] == nil then   
  32.                 tv = tv.."nil\t"  
  33.             elseif type(tab[i]) == "table" then   
  34.                 xn = xn + 1  
  35.                 tv = tv.."\ntable{\n"  
  36.                 table.foreach(tab[i],printTab)  
  37.                 tv = tv.."\t}\n"  
  38.             else  
  39.                 tv = tv..tostring(tab[i]).."\t"  
  40.             end  
  41.         end  
  42.     end  
  43.     local x = ...  
  44.     if type(x) == "table" then  
  45.         table.foreach(x,printTab)  
  46.     else  
  47.         dumpParam({...})  
  48.         -- table.foreach({...},printTab)  
  49.     end  
  50.     print(tv)  
  51. end  

使用示例如下代码

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. local ttt = {23,aa=23,23,  
  2.                 {bbb=23,"dsd",false,nil,  
  3.                     {32,ccc="23dd",  
  4.                         {23,"sdfsdf",  
  5.                             {234,addd="23233jjjjsdOK"}  
  6.                         }  
  7.                     }  
  8.                 },  
  9.                 {dd = "sd",23},  
  10.             true  
  11.             }  
  12.   
  13. cclog(23,"sdf",ttt,"sdssssf",323223,false)  
输出日志如下:
[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. Cocos2d: [LUA-print]   
  2. 23  sdf   
  3. table{  
  4.     1:23  
  5.     2:23  
  6.     3:Table{  
  7.         1:dsd  
  8.         2:false  
  9.         4:Table{  
  10.             1:32  
  11.             2:Table{  
  12.                 1:23  
  13.                 2:sdfsdf  
  14.                 3:Table{  
  15.                     1:234  
  16.                     addd:23233jjjjsdOK  
  17.                     }  
  18.                 }  
  19.             ccc:23dd  
  20.             }  
  21.         bbb:23  
  22.         }  
  23.     4:Table{  
  24.         1:23  
  25.         dd:sd  
  26.         }  
  27.     5:true  
  28.     aa:23  
  29.     }  
  30. sdssssf 323223  false     
0 0