Lua 输出可变参数列表内容
发布时间:2020-12-14 21:53:03 所属栏目:大数据 来源:网络整理
导读:在 Lua 中有8种基本数据类型:nil,boolean,number,string,user data,function,thread,table? 数据类型 描述 nil 表示一个无效值 boolean 包含两个值:false 和 true number 实数 string 字符串 -- 由一对双引号或单引号表示 function 由 C 或者 Lua 编写的函
在 Lua 中有8种基本数据类型:nil,boolean,number,string,user data,function,thread,table?
认识完,这几种基本类型就开始这篇博客的中心思想,目的就是在垒码过程中对数据进行输出: function showPrintInfo(...) -- body local stringcat = "" for k,v in ipairs({...}) do local subString = "" if type(v) == "boolean" then subString = (v == true and "true" or "false") elseif type(v) == "number" or type(v) == "string" then subString = tostring(v) elseif type(v) == "table" then printTable(v) else subString = "<数据是" .. type(v) .. "类型,未处理类型>" end stringcat = stringcat .. " " .. subString end print(stringcat) end 这里其他的类型都容易输出,基本上是直接打印就可以了,关键是对 table 的输出,这里我们需要用到递归的思想: -- tab 需要输出的 table 的对象 -- level 表的深度(可不填,直接从最外层遍历) -- key 该深度下表的索引(可不填,直接从 1 开始遍历) function printTable(tab,level,key) -- body level = level or 1 local indent = "" for i = 1,level do indent = indent .. " " end print(indent .. "{") key = "" for k,v in pairs(tab) do if type(v) == "table" then key = k printTable(v,level + 1,key) else local content if type(v) == "string" then if k ~= #tab then content = string.format(indent .. " " .. ""%s",",tostring(v)) else content = string.format(indent .. " " .. ""%s"",tostring(v)) end print(content) else if k ~= #tab then content = string.format(indent .. " " .. "%s,tostring(v)) else content = string.format(indent .. " " .. "%s",tostring(v)) end print(content) end end end print(indent .. "}") end 测试代码: local tab = { {"Jack","Lucy","John"},{18,20,19},{"CHINA","USA","UK"} } showPrintInfo(true,123,tab) 输出结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |