lua实现一个打印函数,打印table
lua实现一个打印函数,打印table
格式化多行输出
local function dumptable(a_obj)
local getIndent, quoteStr, wrapKey, wrapVal, dumpObj
getIndent = function(level)
return string.rep(" ", level)
end
quoteStr = function(str)
return """ .. string.gsub(str, """, """) .. """
end
- wrapKey = function(val)
if type(val) == "number" then
return "[" .. val .. "]"
elseif type(val) == "string" then
return "[" .. quoteStr(val) .. "]"
else
return "[" .. tostring(val) .. "]"
end
end
wrapVal = function(val, level)
if type(val) == "table" then
return dumpObj(val, level)
elseif type(val) == "number" then
return val
elseif type(val) == "string" then
return quoteStr(val)
else
return tostring(val)
end
end
dumpObj = function(obj, level)
if type(obj) ~= "table" then
return wrapVal(obj)
end
level = level + 1
local tokens = {}
tokens[#tokens + 1] = "{"
for k, v in pairs(obj) do
tokens[#tokens + 1] =
getIndent(level) ..
wrapKey(k) .. " = " .. wrapVal(v, level) .. ","
end
tokens[#tokens + 1] = getIndent(level - 1) .. "}"
return table.concat(tokens, " ")
end
return dumpObj(a_obj, 0)
end
使用demo
local tb = {
a = 1,
b = "aaa",
c = {
c1 = 2,
c2 = "c222"
}
}
print("tb:",dumptable(tb))
输出效果
tb: {
["a"] = 1,
["c"] = {
["c1"] = 2,
["c2"] = "c222",
},
["b"] = "aaa",
}
单行输出
local function dump(a_obj)
local getIndent, quoteStr, wrapKey, wrapVal, dumpObj
getIndent = function(level)
--return string.rep(" ", level)
return string.rep("", level)
end
quoteStr = function(str)
return """ .. string.gsub(str, """, """) .. """
end
wrapKey = function(val)
if type(val) == "number" then
return "[" .. val .. "]"
elseif type(val) == "string" then
return "[" .. quoteStr(val) .. "]"
else
return "[" .. tostring(val) .. "]"
end
end
wrapVal = function(val, level)
if type(val) == "table" then
return dumpObj(val, level)
elseif type(val) == "number" then
return val
elseif type(val) == "string" then
return quoteStr(val)
else
return tostring(val)
end
end
dumpObj = function(obj, level)
if type(obj) ~= "table" then
return wrapVal(obj)
end
level = level + 1
local tokens = {}
tokens[#tokens + 1] = "{"
for k, v in pairs(obj) do
tokens[#tokens + 1] =
getIndent(level) ..
wrapKey(k) .. " = " .. wrapVal(v, level) .. ","
end
tokens[#tokens + 1] = getIndent(level - 1) .. "}"
--return table.concat(tokens, " ")
return table.concat(tokens, "")
end
return dumpObj(a_obj, 0)
end
demo
local tb = {
a = 1,
b = "aaa",
c = {
c1 = 2,
c2 = "c222"
}
}
print("test dump(tb):",dump(tb))
运行效果
test dump(tb): {["a"] = 1,["c"] = {["c1"] = 2,["c2"] = "c222",},["b"] = "aaa",}
元宇宙产品来了近日,百度公司宣布12月27日百度AI开发者大会即将在公司开发的元宇宙产品希壤召开,届时大家就能一睹该产品的芳容了。一直以来我对元宇宙是什么东西都搞不清楚,也不知道对我们普通人的生
2021年12月13日公司新闻一览2爱柯迪表示公司近年来,每年出货1。5亿件铝合金精密压铸件产品,产品主要应用于新能源汽车三电自动驾驶影像热管理(如散热器)ECU电控单元电机水油泵转向传动等多个系列,终端用户几乎覆盖
百度将发布元宇宙产品希壤12月10日,百度宣布将于12月27日发布元宇宙产品希壤,同期的百度AI开发者大会将在希壤APP举办。这是国内首次在元宇宙中举办的大会,可同时容纳10万人同屏互动。百度副总裁希壤负
RedmiK50系列开始入网认证,小米新型电池技术取得突破不出意外,小米12系列手机将会于年内正式发布,而走高性价比路线的RedmiK50系列则将会在明年第一季度陆续发布。而在近日,RedmiK50系列新机也已经正式开始入网。根据数码博主
为什么大多数人宁愿高价买华为,也不愿意买低价的小米呢为什么很多人,宁愿溢价买华为,也不愿意买白菜价的小米呢?有人说华为标就值1000多块了啊。其实有几个原因,第一,华为手机和小米手机的层面不一样,小米品牌无论是手机,还是其他智能产品
英特尔宣称禁用新疆产品其实Intel应该是很心虚的,上次因为和中国一些服务器公司对接,暂停业务,就引起了股价暴跌。中国是世界上最大的服务器生产国和需求国之一,而Intel的x86是重要的核心部件。Int
给小米雷军的一封信这也许是手机的下一个风口雷总好这封信主要是提一个建议打造小米专属智能APP或者内置程序模块,通过语音可进行解锁手机拨打电话导航播放音乐设置闹钟拍照甚至调用其他APP等人机互动操作。这样可以极大地方便手机用
突发!被美国财政部制裁,AI独角兽商汤集团延迟上市人工智能独角兽商汤集团的上市进程按下了暂停键。12月13日,商汤集团发布公告称,全球发售及上市将会延迟,公司仍致力尽快完成全球发售及上市。商汤集团原计划将于12月17日在港交所上市
93岁李嘉诚再套现105亿!出售伦敦写字楼华为鸿蒙明年正式出海GoingGlobal出海周报是创业邦推出的出海系列栏目,旨在为出海领域的创业者和投资人精选出海大事件海外大公司投融资消息,本篇为栏目第112篇报道。整理丨赵晓晓编辑丨及轶嵘本周(
湖南天才少女姚婷刚毕业就被华为156万年薪邀请,来历不简单最近一个刚毕业的女孩火了,原因竟然是刚毕业就加入了华为的天才少年计划,年薪拿156万元。加入天才计划的优质待遇不知道大家对天才少年这个计划是否有所了解呢?天才计划简单来说就是华为老
美国遭龙卷风袭击,亚马逊员工死里逃生像火车呼啸,有人死在厕所上周末,美国多个州遭遇强力龙卷风袭击。这次龙卷风导致伊利诺伊州的一个亚马逊配送中心坍塌,造成至少6人死亡。亚马逊员工大卫科西亚克(DavidKosiak)亲身经历了这场灾难,死里逃
影院式足浴按摩房投影仪如何选?打造氛围感客房必须是专用投影仪投影仪为大家的生活带来了极强的幸福感,走进了我们的生活,除了工作学习生活,连足浴茶室推拿酒店甚至密室大逃脱剧本杀这类娱乐休闲场所也为跟随趋势,为客户营造更好更舒适的环境。足浴酒店选
山灵UA1pro听音乐的好神器前言山灵的产品线这几年发展的不错,最近又推出了一款镜面工艺全新内核几乎0底噪低功耗大推力的转换器,深得大家喜欢。山灵在最近推出的UA1Pro就很好的满足了需要,这款耳放相较普通的转
一款听歌APP有些扎眼!比网易QQ音乐曲库还丰富,但全免费开个黑胶,充个绿钻,为了听歌,各大音乐平台最基本的就是要开会员,时不时还要来个单曲付费才能听,几个音乐APP,几个会员,占手机内存不说,每个月要多花几十块钱,一个月听歌可能也就那么
元宇宙出圈了!字节跳动90亿加码VR产业链五大层次标的全梳理今年以来,元宇宙这个拗口的名词频繁出圈,成为初创企业科技巨头和风险资本追逐的对象。Facebook高调的入局宣言更是将元宇宙的热度推向新高,不少媒体甚至称2021年是元宇宙元年。8
专业影像芯片V1即将到来!vivoX70系列首发搭载根据Counterpoint公布的最新数据显示,vivo以24的市场份额位居中国智能手机市场第一位,但是vivo并未刻意宣传这一数据,而是继续稳扎稳打,即将推出新一代影像旗舰viv
2021年鼠标推荐(500以上)500800价位罗技G703无线鼠标,沿用罗技G403的模具95G,大尺寸,人体工学设计电池续航60小时,支持PowerPlay无线充电罗技G903大手,抓握鼠,对称设计,体型长,
华为P50系列爆改5G?真的假的,能否成功?华为P50Pro拆解视频出了,提取了几点发出来,感兴趣的可以看原视频。NO1。比亚迪供应玻璃机身后盖,飞毛腿电池。NO2。海力士LPDDR5内存东芝UFS3。1闪存。NO3。X轴线
一款商务本的热度竟超游戏本惠普战66到底凭什么?现如今,年轻人已成为职场的主力军,他们酷爱时尚,引领潮流,尤其对于电子产品的设计和品质都有着非常严格的态度,笔记本作为生产力工具,职场人最看重的电脑是什么呢?想必是一台性能强劲颜值
vivoX70系列大爆料自从vivoX系列发布开始每一次新机发布都是亮点,从上一个X60系列的微云台的亮点到现在为新机用上自研的V1芯片都是国产手机的一次进步今天我就给大家爆料一下即将在9月9号发布的vi
208块钱的鸿蒙手机,把我看傻了不得不说啊,近几年来国内手机真的好起来了。以前国内的手机市场是出了名的混乱,几百块钱的山寨机横行,质量不咋样,广告倒是打得够响亮。而且那时候网络也不发达,这些山寨手机就利用三四线城
这是一条关于苹果12pm使用了半年的感受媒体人周刊三月份买的新机,到现在差不多已经使用半年了。这半年期间出现过几次屏幕失灵和黑屏,拿到售后没检测出来毛病,在六月份更新系统之前也出现过蓝屏。手机的重量确实很重,坐在公交地铁