1. 程式人生 > >lua中列印所以型別功能實現table巢狀table

lua中列印所以型別功能實現table巢狀table

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.     local function printTab(i,v)  
  11.         -- body  
  12.         if type(v) == "table" then  
  13.             tvlinet(xn)  
  14.             xn = xn + 1  
  15.             tv = tv..""..i..":Table{\n"
  16.             table.foreach(v,printTab)  
  17.             tvlinet(xn)  
  18.             tv = tv.."}\n"
  19.             xn = xn - 1  
  20.         elseif type(v) == nil then  
  21.             tvlinet(xn)  
  22.             tv = tv..i..":nil\n"
  23.         else
  24.             tvlinet(xn)  
  25.             tv = tv..i..":"..tostring(v).."\n"
  26.         end  
  27.     end  
  28.     local function dumpParam(tab)  
  29.         for i=1, #tab do
  30.             if tab[i] == nil then   
  31.                 tv = tv.."nil\t"
  32.             elseif type(tab[i]) == "table" then   
  33.                 xn = xn + 1  
  34.                 tv = tv.."\ntable{\n"
  35.                 table.foreach(tab[i],printTab)  
  36.                 tv = tv.."\t}\n"
  37.             else
  38.                 tv = tv..tostring(tab[i]).."\t"
  39.             end  
  40.         end  
  41.     end  
  42.     local x = ...  
  43.     if type(x) == "table" then  
  44.         table.foreach(x,printTab)  
  45.     else
  46.         dumpParam({...})  
  47.         -- table.foreach({...},printTab)  
  48.     end  
  49.     print(tv)  
  50. 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. 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