lua实现scan函数

function dump(obj)

        local getIndent, quoteStr, wrapKey, wrapVal, dumpObj

        getIndent = function(level)
                return string.rep("\t", 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, "\n")
        end

        return dumpObj(obj, 0)

end   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值