您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页如何打印出lua里table的内容

如何打印出lua里table的内容

来源:小侦探旅游网
如何打印出lua⾥table的内容

不像开发as3时⽤fb有强⼤的断点调试功能,⼀般lua开发不⽤什么⾼级的ide,貌似也没有适合的,就直接⽤sublime、exvim等⽂本编辑器,直接编译运⾏看结果。所以不能很⽅便的知道变量值,特别是开发⼿游时,前后端调协议,如果⽆法查看后端发过来的数据就更蛋疼了。对于其他的数据还可以直接⽤print()函数打印出来,但对于table数据print()就⽆能为⼒了,所以可以写个⾃⼰写个⽅法,专门⽤于递归遍历并打印出table的内容。当需要看某个table的内容时,直接调⽤PrintTable(table名)就可以了。

实现代码

----- @function: 打印table的内容,递归-- @param: tbl 要打印的table

-- @param: level 递归的层数,默认不⽤传值进来

-- @param: filteDefault 是否过滤打印构造函数,默认为是-- @return: return

function PrintTable( tbl , level, filteDefault) local msg = \"\"

filteDefault = filteDefault or true --默认过滤关键字(DeleteMe, _class_type) level = level or 1 local indent_str = \"\" for i = 1, level do

indent_str = indent_str..\" \" end

print(indent_str .. \"{\") for k,v in pairs(tbl) do if filteDefault then

if k ~= \"_class_type\" and k ~= \"DeleteMe\" then

local item_str = string.format(\"%s%s = %s\ print(item_str)

if type(v) == \"table\" then PrintTable(v, level + 1) end

end else

local item_str = string.format(\"%s%s = %s\ print(item_str)

if type(v) == \"table\" then PrintTable(v, level + 1) end

end end

print(indent_str .. \end

local x = {a = 20,20,60,{a = {a = 1,2323},2323}}

PrintTable(x)

⽤sublime直接ctrl+B编译运⾏,就可以看到控制台⾥正确的输出了table的内容。 { 1 = 20 2 = 60

3 = table: 006DB668 {

1 = 2323

a = table: 006DB7D0 {

1 = 2323 a = 1 }

}

a = 20 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务