迭代表
Lua 标准库提供了 pairs 函数,它迭代表的键和值。当使用 pairs 进行迭代时,即使表的键是数字,也没有指定的遍历顺序。
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
迭代表的最后一种方法是在通用的 for 循环中使用 next 选择器。像 pairs 一样,没有指定的遍历顺序。 (pairs 方法在内部使用 next。所以使用 next 本质上是一个更为手动的 pairs 版本。有关详细信息,请参阅 Lua 参考手册中的 pairs和 Lua 参考手册中的 next 。)
for key, value in next, input_table do
print(key, value)
end