Lua标准库提供pairs了对表的键和值进行迭代的功能。使用进行迭代时pairs,即使表的键是numeric,也没有指定的遍历顺序。
for key, value in pairs(input_table) do print(key, " -- ", value) end
对于使用数字键的表,Lua提供了一个ipairs功能。该ipairs函数将始终从table[1],table[2]等等进行迭代,直到nil找到第一个值。
for index, value in ipairs(numeric_table) do print(index, ". ", value) end
请注意,ipairs()在某些情况下,迭代使用将无法正常工作:
input_table有“洞”。(有关更多信息,请参见“避免在用作数组的表中的间隙”部分。)例如:
table_with_holes = {[1] = "value_1", [3] = "value_3"}
键并非全都是数字。例如:
mixed_table = {[1] = "value_1", ["not_numeric_index"] = "value_2"}
当然,以下内容也适用于适当顺序的表:
for i = 1, #numeric_table do print(i, ". ", numeric_table[i]) end
以相反的顺序迭代数字表很容易:
for i = #numeric_table, 1, -1 do print(i, ". ", numeric_table[i]) end
迭代表的最后一种方法是next在通用for循环中使用选择器。就像pairs没有特定的遍历顺序。(该pairs方法在next内部使用。因此使用next本质上是的更手动版本pairs。有关更多详细信息,请参见pairsLua的参考手册和nextLua的参考手册。)
for key, value in next, input_table do print(key, value) end