在lua中,table是比较常用的数据形式,有时候为了打印出里面的内容,需要做一些特殊处理。

废话不多讲,直接粘代码:

 print = release_print

 -- 递归打印table
local tableDump = function (tab, nesting)
if type(nesting) ~= "number" then nesting = end
local info = debug.getinfo()--获取当前脚本所在的目录
print(string.format("%s : %s",info.source, info.currentline)) local function getStr(value, is_key)--拼合table
if is_key then
if type(value) == "string" then
return value
else
return string.format('[%s]', tostring(value))
end
else
if type(value) == "string" then
return string.format('"%s"', value)
else
return tostring(value)
end
end
end if type(tab) ~= "table" then--当解析到最后一层表的时候递归返回
print(getStr(tab))
return
end print(tostring(tab).." = {")
local line = ""
local space = " "
local printTab
printTab = function(t)
line = line..space
for k,v in pairs(t) do
if type(v) == "table" then
if string.len(line)/string.len(space) >= nesting then
print(line..getStr(k, true).." = MAX NESTING,")
else
print(line..getStr(k, true).." = {")
printTab(v)
end
else
print(line..getStr(k, true).." = "..getStr(v)..',')
end
end
line = string.sub(line,, string.len(line)-string.len(space))
if line == "" then
print(line.."}")
else
print(line.."},")
end
end
printTab(tab)
end _dump = tableDump -- 重新载入脚本
SYS_REQUIREAGAIN_FLAG = true
function requireAgain(file_name)
if SYS_REQUIREAGAIN_FLAG then
if package.loaded[file_name] then
package.loaded[file_name] = nil
end
end
return require(file_name)
end

使用的时候直接以方法的使用规则使用

_dump(my_table)

递归打印lua中的table的更多相关文章

  1. lua中遍历table的几种方式比较

    当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtes ...

  2. Lua中使用table实现的其它5种数据结构

    Lua中使用table实现的其它5种数据结构 lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示. 1.数组 在lua中,table ...

  3. lua中的table、stack和registery

    ok,前面准备给一个dll写wrapper,写了篇日志,看似写的比较明白了,但是其实有很多米有弄明白的.比如PIL中使用的element,key,tname,field这些,还是比较容易混淆的.今天正 ...

  4. Lua中的table函数库

    table.concat(table, sep,  start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组 ...

  5. Lua中的table构造式(table constructor)

    最简单的构造式就是一个空构造式{},用于创建一个空table. 构造式还可以用于初始化数组.例如,以下语句:days = {"Sunday", "Monday" ...

  6. lua中求table长度

    关于lua table介绍,看以前的文章http://www.cnblogs.com/youxin/p/3672467.html. 官方文档是这么描述#的: 取长度操作符写作一元操作 #. 字符串的长 ...

  7. lua中求table长度--(转自有心故我在)

    关于lua table介绍,看以前的文章http://www.cnblogs.com/youxin/p/3672467.html. 官方文档是这么描述#的: 取长度操作符写作一元操作 #. 字符串的长 ...

  8. 打印lua中全局变量的一段代码

    function printTableItem(k, v, level) , level do io.write(" ") end io.write(tostring(k), &q ...

  9. Lua中获取table长度

    -- table.getn(tableName) 得到一个table的大小,等同于操作符# -- 要注意的是:该table的key必须是有序的,索引是从1开始的. --例如有序的 local xian ...

随机推荐

  1. Java运行时数据区域分析

    Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结 ...

  2. python中TCP协议中的粘包问题

    TCP协议中的粘包问题 1.粘包现象 基于TCP实现一个简易远程cmd功能 #服务端 import socket import subprocess sever = socket.socket() s ...

  3. thymeleaf标签必须由匹配的结束标记终止

    问题描述 springboot使用Thymeleaf标签时会报元素类型必须由匹配的结果标记终止. 如下所示 如果我们一个个的给这些元素后面加上终止标记也是件很麻烦的事~~~~ 解决办法 方法一: 在p ...

  4. MySQL复制相关技术的简单总结

    MySQL有很多种复制,至少从概念上来看,传统的主从复制,半同步复制,GTID复制,多线程复制,以及组复制(MGR).咋一看起来很多,各种各样的复制,其实从原理上看,各种复制的原理并无太大的异同.每一 ...

  5. 2019/4/17 Linux学习

    一.Linux的文件系统 其中/prov./srv./sys 文件为文件系统,技术不过硬不要去修改:二.关于Xshell.Xft1.服务器的端口可有65535个可设置,开的越多安全性越差:2.远程登录 ...

  6. day52类型转换 运算符 流程控制

    0.复习 1.导入 <div id="div1" onclick="this.style.color = 'red';">12345</div ...

  7. 【Spring】Spring3+Spring3MVCの環境構築(中)

    参考URL: https://www.cnblogs.com/lnsylt/p/10258457.html ■目録 ■環境設定 ①pom.xml <?xml version="1.0& ...

  8. nginx多域名、多证书

    环境: 一台nginx服务器 192.168.10.251 两台windowsserver2012 IIS服务器 (192.168.10.252.192.168.10.253) 从阿里云上下载ssl证 ...

  9. python跨平台注释

    使python程序运行在window以外的平台上 !#  user/bin/python

  10. innodb 体系结构(后台进程)

    一.后台进程(innodb 1.0.x以前的) 1.master thread master thread具有最高的线程优先级别,其内部由多个循环(loop)组成:主循环(loop).后台循环(bac ...