迭代表

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 參考手冊中的 pairsLua 參考手冊中的 next 。)

for key, value in next, input_table do
    print(key, value)
end