在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. php连接mysql(linux下)

    一开始尝试了各种办法,.so文件拷贝了很多地方都失败了, 最后才知道 是编译php 没有开放 mysql ./configure --prefix=/usr/local/php5 --with-apx ...

  2. js导出excel文件

    <div id="tablesDiv"> <table id="tabDiv1"> <tbody><tr> &l ...

  3. linux 服务管理

    服务的分类 查看已安装的服务 RPM包安装的服务 chkconfig --list #查看服务自启动状态,可以看到所有rpm包安装的服务 ps aux #查看已启动的服务 源码包安装的服务 查看服务安 ...

  4. numpy-matrix 方法速查

    ->matrix.T transpose:返回矩阵的转置矩阵 matrix.H hermitian (conjugate) transpose:返回复数矩阵的共轭元素矩阵 matrix.I in ...

  5. 初学python---排序

    1.永久性排序 sort() a = [12,45,1,25,3] a.sort() print(a)  ----[1, 3, 12, 25, 45] 2.临时排序 sorted() a = [12, ...

  6. vue中的一些知识点--多看文档

    重温vue,一些知识点简单记录. 1.我们都知道当数据变化时,视图会重新渲染.注意:只有当vue实例被创建时,data中存在的属性才是响应式的.后续新添加的属性不会触发视图变化. 使用 Object. ...

  7. jQuery之位置坐标图形相关方法

    jQuery实例方法-位置图形 位置坐标图形大小相关方法: .offset() .position() .scrollTop() ..scrollLeft() .width()..height() . ...

  8. js----点击事件三种方法

    在javascript中,可以为某个元素指定事件,指定的方式有以下三种: 1.在html中,使用onclick属性 2.在javascript中,使用onclick属性 (1)注意函数名没有双引号. ...

  9. 关于python的正则表达式的例子

  10. WMS二开:外挂页面开发培训

    springboot:MAVEN结构前后台都是MVC架构基于模板引擎thymeleafapplication.yml文件里面配置了一个DEV\TEST\PROD,用于自动选择配置文件applicati ...