递归打印lua中的table
在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的更多相关文章
- lua中遍历table的几种方式比较
当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtes ...
- Lua中使用table实现的其它5种数据结构
Lua中使用table实现的其它5种数据结构 lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示. 1.数组 在lua中,table ...
- lua中的table、stack和registery
ok,前面准备给一个dll写wrapper,写了篇日志,看似写的比较明白了,但是其实有很多米有弄明白的.比如PIL中使用的element,key,tname,field这些,还是比较容易混淆的.今天正 ...
- Lua中的table函数库
table.concat(table, sep, start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组 ...
- Lua中的table构造式(table constructor)
最简单的构造式就是一个空构造式{},用于创建一个空table. 构造式还可以用于初始化数组.例如,以下语句:days = {"Sunday", "Monday" ...
- lua中求table长度
关于lua table介绍,看以前的文章http://www.cnblogs.com/youxin/p/3672467.html. 官方文档是这么描述#的: 取长度操作符写作一元操作 #. 字符串的长 ...
- lua中求table长度--(转自有心故我在)
关于lua table介绍,看以前的文章http://www.cnblogs.com/youxin/p/3672467.html. 官方文档是这么描述#的: 取长度操作符写作一元操作 #. 字符串的长 ...
- 打印lua中全局变量的一段代码
function printTableItem(k, v, level) , level do io.write(" ") end io.write(tostring(k), &q ...
- Lua中获取table长度
-- table.getn(tableName) 得到一个table的大小,等同于操作符# -- 要注意的是:该table的key必须是有序的,索引是从1开始的. --例如有序的 local xian ...
随机推荐
- 搭建rancher节点
1.centos 7.5 64 2.安装docker systemctl restart docker.service 注意:重启后才有 /etc/docker/文件夹 切换到这文件夹下再增加对应的d ...
- springboot + schedule
参考文章:https://blog.csdn.net/sinianliushui/article/details/78841713 参考文章: https://blog.csdn.net/hao703 ...
- UI设计篇·入门篇·绘制简单自定义矩形图/设置按钮按下弹起颜色变化/设置图形旋转
Android的基本控件和图形有限,难以满足所有的实际需要和设计需求,好在Android给出了相对完善的图形绘制和自定义控件的API,利用这些API,可以基本满足设计的需求. 自定义图像和控件的方法: ...
- 求1!+2!+3!+......+n!的和 -----C++-----
#include<iostream> using namespace std; int function(int x) { ; ;i<=x;i++) sum=sum*i; retur ...
- python--第二十三天总结(一对多和多对多)
Django 的 ORM 有多种关系:一对一,多对一,多对多. 各自定义的方式为 : 一对一: OneToOneField 多对一: ForeignKey 多 ...
- 跳转Activity时清除当前Activity
void GotoMainActivity(){ Intent intent = new Intent(ProductionInformationActivity.this, MainActivity ...
- python的re模块详解
一.正则表达式的特殊字符介绍 正则表达式 ^ 匹配行首 $ 匹配行尾 . 任意单个字符 [] 匹配包含在中括号中的任意字符 [^] 匹配包含在中括号中的字符之外的字符 [-] 匹配指定范围的任意单个字 ...
- pythone函数基础(12)连接Redis,写数据,读数据,修改数据
需要导入Resdis模块 import redisip = '127.0.0.1'password='123456'r = redis.Redis(host=ip,password=password, ...
- supervisor学习
概念 supervisord 服务端 启动supervisor程序自身,启动supervisor管理的子进程,响应supervisorctl的请求,重启闪退或异常退出的子进程,把子进程的stderr或 ...
- select 两层 第二个select需要加别名
select t.id from (select xxx) t