• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

(转)luadump函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
[cpp] view plain copy
 
  1. function dump(value, desciption, nesting)    
  2.     if type(nesting) ~= "number" then nesting = 3 end    
  3.     
  4.     local lookupTable = {}    
  5.     local result = {}    
  6.     
  7.     local function _v(v)    
  8.         if type(v) == "string" then    
  9.             v = "\"" .. v .. "\""    
  10.         end    
  11.         return tostring(v)    
  12.     end    
  13.     
  14.     local traceback = string.split(debug.traceback("", 2), "\n")    
  15.     print("dump from: " .. string.trim(traceback[3]))    
  16.     
  17.     local function _dump(value, desciption, indent, nest, keylen)    
  18.         desciption = desciption or "<var>"    
  19.         spc = ""    
  20.         if type(keylen) == "number" then    
  21.             spc = string.rep(" ", keylen - string.len(_v(desciption)))    
  22.         end    
  23.         if type(value) ~= "table" then    
  24.             result[#result +1 ] = string.format("%s%s%s = %s", indent, _v(desciption), spc, _v(value))    
  25.         elseif lookupTable[value] then    
  26.             result[#result +1 ] = string.format("%s%s%s = *REF*", indent, desciption, spc)    
  27.         else    
  28.             lookupTable[value] = true    
  29.             if nest > nesting then    
  30.                 result[#result +1 ] = string.format("%s%s = *MAX NESTING*", indent, desciption)    
  31.             else    
  32.                 result[#result +1 ] = string.format("%s%s = {", indent, _v(desciption))    
  33.                 local indent2 = indent.."    "    
  34.                 local keys = {}    
  35.                 local keylen = 0    
  36.                 local values = {}    
  37.                 for k, v in pairs(value) do    
  38.                     keys[#keys + 1] = k    
  39.                     local vk = _v(k)    
  40.                     local vkl = string.len(vk)    
  41.                     if vkl > keylen then keylen = vkl end    
  42.                     values[k] = v    
  43.                 end    
  44.                 table.sort(keys, function(a, b)    
  45.                     if type(a) == "number" and type(b) == "number" then    
  46.                         return a < b    
  47.                     else    
  48.                         return tostring(a) < tostring(b)    
  49.                     end    
  50.                 end)    
  51.                 for i, k in ipairs(keys) do    
  52.                     _dump(values[k], k, indent2, nest + 1, keylen)    
  53.                 end    
  54.                 result[#result +1] = string.format("%s}", indent)    
  55.             end    
  56.         end    
  57.     end    
  58.     _dump(value, desciption, "- ", 1)    
  59.     
  60.     for i, line in ipairs(result) do    
  61.         print(line)    
  62.     end    
  63. end    


用法:dump(t)  --t为打印的内容

 

原文地址:https://blog.csdn.net/u013517637/article/details/53977732


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua中cJson的读写发布时间:2022-07-22
下一篇:
C中调用LUA回调(LUA注册表)发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap