一、基本打印table
--定义一个table
local myTable = {key1 = "value1", key2 = "value2", key3 = "value3"}
--打印table
print(myTable)
--输出:table: 0x7f99f0404670
默认情况下,通过print打印出来的table仅显示它在内存中的地址。需要通过其他方式将table内容打印出来。
二、使用pairs函数打印table
local myTable = {key1 = "value1", key2 = "value2", key3 = "value3"}
for key, value in pairs(myTable) do
print(key, value)
end
--输出:
--key1 value1
--key2 value2
--key3 value3
使用pairs函数可以遍历table中的所有元素,输出每个元素对应的key和value。
三、使用ipairs函数打印数组型table
local myTable = {"value1", "value2", "value3"}
for index, value in ipairs(myTable) do
print(index, value)
end
--输出:
--1 value1
--2 value2
--3 value3
使用ipairs函数逐一打印一个数组型table中的元素。注意:ipairs只输出连续下标的元素。
四、使用table.concat函数打印table
local myTable = {"value1", "value2", "value3"}
local str = table.concat(myTable, ", ")
print(str)
--输出:"value1, value2, value3"
如果需要将table中的元素拼接成一个字符串,可以使用table.concat函数。
五、美化table打印结果
local myTable = {
key1 = "value1",
key2 = "value2",
key3 = {
subkey1 = "subvalue1",
subkey2 = "subvalue2"
}
}
function printTable(table, level)
level = level or 1
local indent = ""
for i = 1, level do
indent = indent.." "
end
if level > 1 then
print(indent.."{")
end
for k, v in pairs(table) do
if type(v) == "table" then
print(indent..k.." = {")
printTable(v, level + 1)
print(indent.."},")
else
local content = string.format("%s%s = %s,", indent, tostring(k), tostring(v))
print(content)
end
end
if level > 1 then
print(indent.."}")
end
end
printTable(myTable)
--输出:
--{
-- key1 = value1,
-- key2 = value2,
-- key3 = {
-- subkey1 = subvalue1,
-- subkey2 = subvalue2,
-- },
--}
美化table打印结果可以使输出更易读。可以自定义一个函数,递归调用打印table中的所有元素,并加入缩进。
总结
在Lua中,可以通过多种方式打印table。通常使用pairs函数遍历table中的元素,使用ipairs函数遍历数组型table中的元素。如果需要将table中的元素拼接成一个字符串,可以使用table.concat函数。如果需要美化table打印结果,可以自定义一个递归函数。
原创文章,作者:VGNWU,如若转载,请注明出处:https://www.506064.com/n/333388.html
微信扫一扫
支付宝扫一扫