在开发中,无法直接打印出 table,当 table 的层次越来越深,写代码就变得吃力,且容易出错。网上查找了一下,有不少大佬分享了自己的打印 table 方法,但是大多数排版都不是我喜欢的类型,所以借鉴了一下经验,自己写了一个。
我想要的效果:
- 还原输入时的格式,写的时候是什么格式,输出也是什么格式
- 去除多余逗号
- 子项不是 table 的 table 显示成一行
- 允许打印非 table 的其他数据类型
- 函数返回一个格式化的文本,而非直接打印出来
代码如下:
--[[
* 打印 table
* @param {any} val 传入值
* @return {str} 格式化后的文本
]]
function table.print (val)
local function loop (val, keyType, _indent)
_indent = _indent or 1
keyType = keyType or "string"
local res = ""
local indentStr = " " -- 缩进空格
local indent = string.rep(indentStr, _indent)
local end_indent = string.rep(indentStr, _indent - 1)
local putline = function (...)
local arr = { res, ... }
for i = 1, #arr do
if type(arr[i]) ~= "s