迭代表
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