--这是quick中的工具,作用就是打印Lua中强大的table的结构, 当table的嵌套层级比较多的时候,这个工具非常方便,开发中必备的工具。
--具体使用方法:local debug = require("debug")
--       debug.dump(dataTable, "dataTable", 3) 接下来就可以在控制台看到输出的结果了,非常漂亮的树形结构
module(..., package.seeall) local g_Debug_Flag = true function log(msg)
if g_Debug_Flag == false then
return
end
cclog(msg)
end ---
--@function dump()
--@param value table 需要打印的
--@param description string 描述
--@param nesting int table嵌套层级
--@end function dump(value, description, nesting)
if g_Debug_Flag == false then
return
end --默认打印层级3
if type(nesting) ~= "number" then
nesting =
end local lookupTable = {}
local result = {} local function _v(v)
if type(v) == "string" then
v = "\"" .. v .. "\""
end
return tostring(v)
end local function _dump(value, description, indent, nest, keylen)
description = description or "<var>"
spc = ""
if type(keylen) == "number" then
spc = string.rep(" ",keylen - string.len(_v(description)))
end if type(value) ~= "table" then
result[#result + ] = string.format("%s%s%s = %s", indent, _v(description), spc, _v(value))
elseif lookupTable[value] then
result[#result + ] = string.format("%s%s%s = *REF*", indent, description, spc)
else
lookupTable[value] = true
if nest > nesting then
result[#result + ] = string.format("%s%s = *MAX NESTING*", indent, description)
else
result[#result + ] = string.format("%s%s = {" , indent, _v(description))
local indent2 = indent .. " "
local keys = {}
local keylen =
local values = {}
for k, v in pairs(value) do
keys[#keys + ] = k
local vk = _v(k)
local vk1 = string.len(vk)
if vk1 > keylen then
keylen = vk1
end
values[k] = v
end
table.sort(keys,function(a, b)
if type(a) == "number" and type(b) == "number" then
return a < b
else
return tostring(a) < tostring(b)
end
end) for i, k in pairs(keys) do
_dump(values[k], k, indent2,nest + ,keylen)
end
result[#result + ] = string.format("%s}", indent)
end
end
end
_dump(value,description, "- ", ) for i, line in pairs(result) do
print(line)
end end
  

Lua打印Table的数据结构工具类的更多相关文章

  1. Lua 打印 table (支持双向引用的table)

    网上搜了一下,挺多打印table的方案,基本思路都是一层一层递归遍历table.(我就是参考这种思路做的^_^) 但大部分都不支持双向引用的打印.我所指的双向引用,就是a引用b, b又直接或间接引用a ...

  2. lua 打印 table 拷贝table

    -- 打印table function print_lua_table (lua_table, indent) if lua_table == nil or type(lua_table) ~= &q ...

  3. Lua打印table树形结构

    --这是quick中的工具,作用就是打印Lua中强大的table的结构, 当table的嵌套层级比较多的时候,这个工具非常方便,开发中必备的工具.--具体使用方法:local debug = requ ...

  4. linkin大话数据结构--Google commons工具类

    package tz.web.dao.bean; import java.util.Arrays; import java.util.Collection; import java.util.List ...

  5. Java自学第6期——Collection、Map、迭代器、泛型、可变参数、集合工具类、集合数据结构、Debug

    集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. ...

  6. 打印Lua的Table对象

    小伙伴们再也不用为打印lua的Table对象而苦恼了, 本人曾也苦恼过,哈哈 不过今天刚完成了这个东西, 以前在网上搜过打印table的脚本,但是都感觉很不理想,于是,自己造轮子了~ 打印的效果,自己 ...

  7. 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类

    快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ...

  8. android的Log日志打印管理工具类(一)

    android的Log日志的打印管理工具类: package com.gzcivil.utils; import android.util.Log; /** * 日志打印管理 * * @author ...

  9. linkin大话数据结构--apache commons工具类

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动. 一.Commons BeanUtils 说明:针对Bean的一个工具集.由于Bean往往是有一堆ge ...

随机推荐

  1. htaccess 实现网址缩短

    访问 :app.xxx.com/a 解析到:app.xxx.com/index.php/app/a <IfModule mod_rewrite.c> RewriteEngine on Re ...

  2. rs.Open sql,conn,0,2,1

    例子:rs.Open sql,conn,0,2,1 CursorType = 0,默认值,打开仅向前类型游标.LockType = 2, 开放式锁定Options = 1, 指示 ADO 生成 SQL ...

  3. iOS NSString类中获取子字符串

    NSString类中提供了这样三个方法用于获取子字符串: – substringFromIndex://取字符串长度从0开始,当index=str.length时字符串为空"" – ...

  4. Camera Path插件的使用

    rpg游戏类型的游戏,猪脚走过一个个场景,一个个死角.拐弯处,摄像机镜头也能很好的跟踪对焦,很多朋友都会想,这摄像机如何智能跟踪并且对焦呢? 之前 itween也有demo,但它做法是 两条线,一条摄 ...

  5. Jenkins+SonarQube代码质量检查自动化

    基础概念百度百科:Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1.持续的软件版本发布/测试项目.2.监控外部调用执行的工作.前面[Sonarqube 代码质量 ...

  6. FZU 2091 播放器(栈应用)

    栈基础应用 #include<iostream> #include<cstdio> #include<cstring> #include<vector> ...

  7. UVA 10200 Prime Time (打表)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  8. P图

    照片名称:调出照片柔和的蓝黄色-简单方法,1.打开原图素材,按Ctrl + J把背景图层复制一层,点通道面板,选择蓝色通道,图像 > 应用图像,图层为背景,混合为正片叠底,不透明度50%,反相打 ...

  9. Codeforces Round #366 (Div. 2) C. Thor (模拟)

    C. Thor time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

  10. 主机windwo7+虚拟机centos如何配置虚拟机可以上网,且与主机互ping通

    /etc/sysconfig/network-scripts/ifcfg-eth0的配置如下: E=eth0PROTO=static#IPADDR=10.1.1.138IPADDR=192.168.0 ...