在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. 搭建rancher节点

    1.centos 7.5 64 2.安装docker systemctl restart docker.service 注意:重启后才有 /etc/docker/文件夹 切换到这文件夹下再增加对应的d ...

  2. springboot + schedule

    参考文章:https://blog.csdn.net/sinianliushui/article/details/78841713 参考文章: https://blog.csdn.net/hao703 ...

  3. UI设计篇·入门篇·绘制简单自定义矩形图/设置按钮按下弹起颜色变化/设置图形旋转

    Android的基本控件和图形有限,难以满足所有的实际需要和设计需求,好在Android给出了相对完善的图形绘制和自定义控件的API,利用这些API,可以基本满足设计的需求. 自定义图像和控件的方法: ...

  4. 求1!+2!+3!+......+n!的和 -----C++-----

    #include<iostream> using namespace std; int function(int x) { ; ;i<=x;i++) sum=sum*i; retur ...

  5. python--第二十三天总结(一对多和多对多)

    Django 的 ORM 有多种关系:一对一,多对一,多对多. 各自定义的方式为 :        一对一: OneToOneField        多对一: ForeignKey        多 ...

  6. 跳转Activity时清除当前Activity

    void GotoMainActivity(){ Intent intent = new Intent(ProductionInformationActivity.this, MainActivity ...

  7. python的re模块详解

    一.正则表达式的特殊字符介绍 正则表达式 ^ 匹配行首 $ 匹配行尾 . 任意单个字符 [] 匹配包含在中括号中的任意字符 [^] 匹配包含在中括号中的字符之外的字符 [-] 匹配指定范围的任意单个字 ...

  8. pythone函数基础(12)连接Redis,写数据,读数据,修改数据

    需要导入Resdis模块 import redisip = '127.0.0.1'password='123456'r = redis.Redis(host=ip,password=password, ...

  9. supervisor学习

    概念 supervisord 服务端 启动supervisor程序自身,启动supervisor管理的子进程,响应supervisorctl的请求,重启闪退或异常退出的子进程,把子进程的stderr或 ...

  10. select 两层 第二个select需要加别名

    select t.id from (select xxx) t