Lua 打印table、ngx.say table

it2023-03-25  83

目录

打印 table函数:

ngx.say table 函数:


打印 table函数:

function print_r ( t ) local print_r_cache={} local function sub_print_r(t,indent) if (print_r_cache[tostring(t)]) then print(indent.."*"..tostring(t)) else print_r_cache[tostring(t)]=true if (type(t)=="table") then for pos,val in pairs(t) do if (type(val)=="table") then print(indent.."["..pos.."] => "..tostring(t).." {") sub_print_r(val,indent..string.rep(" ",string.len(pos)+8)) print(indent..string.rep(" ",string.len(pos)+6).."}") elseif (type(val)=="string") then print(indent.."["..pos..'] => "'..val..'"') else print(indent.."["..pos.."] => "..tostring(val)) end end else print(indent..tostring(t)) end end end if (type(t)=="table") then print(tostring(t).." {") sub_print_r(t," ") print("}") else sub_print_r(t," ") end print() end

测试:

tb1 = { k1 = "v1", k2 = "v2", k3 = {"1", "2", "3"} } print_r(tb1)

结果:

ngx.say table 函数:

function tb_say ( t ) local print_r_cache={} local function sub_print_r(t,indent) if (print_r_cache[tostring(t)]) then ngx.say(indent.."*"..tostring(t)) else print_r_cache[tostring(t)]=true if (type(t)=="table") then for pos,val in pairs(t) do if (type(val)=="table") then ngx.say(indent.."["..pos.."] => "..tostring(t).." {") sub_print_r(val,indent..string.rep(" ",string.len(pos)+8)) ngx.say(indent..string.rep(" ",string.len(pos)+6).."}") elseif (type(val)=="string") then ngx.say(indent.."["..pos..'] => "'..val..'"') else ngx.say(indent.."["..pos.."] => "..tostring(val)) end end else ngx.say(indent..tostring(t)) end end end if (type(t)=="table") then ngx.say(tostring(t).." {") sub_print_r(t," ") ngx.say("}") else sub_print_r(t," ") end ngx.say() end

 

OK.

最新回复(0)