參考資料 › 函式參考 › Functions

Functions.collections.spairs

公用

呼叫方式

Functions.collections.spairs(t, order)

將它記錄為名為 Functions.collections.spairs 的相依項目(接受自動完成即可完成此步驟),然後以該名稱呼叫。

作用

建立一個走訪表格鍵排序快照的迭代器。預設依鍵排序;自訂排序回呼會收到原始表格與兩個鍵。每次產出一個鍵時,值從原始表格中讀取。當下一個擷取的鍵為 nil 或 false 時,舊版迭代器結束。

參數

名稱類型作用
ttable要走訪的表格;未提供自訂排序時,鍵之間必須可以相互比較。
orderfunction | nil選擇性的排序回呼,以 order(t, leftKey, rightKey) 的形式呼叫。

傳回值

1function產出一個擷取的鍵及其目前表格值的迭代器;耗盡時不產出任何值。

版本

內建輔助函式在每個版本上都會註冊。不同的是它們讀取的遊戲 API;某個 API 不存在時,輔助函式會改用備用方式,或傳回 nil 並附上原因。

它不會直接讀取任何遊戲 API。

範例

local stacks = { Frost = 2, Arcane = 1, Fire = 3 }
local byCount = function(t, a, b) return t[a] > t[b] end
for school in Functions.collections.spairs(stacks, byCount) do
    return school == "Fire"
end
return false

原始碼

Functions/collections.lua,第 38 行。在遊戲中為唯讀;「複製」會產生一份可編輯的複本。

Functions.collections.spairs(t, order)
    -- collect the keys
    local keys = {}
    for k in pairs(t) do keys[#keys+1] = k end

    -- if order function given, sort by it by passing the table and keys a, b,
    -- otherwise just sort the keys
    if order then
        table.sort(keys, function(a,b) return order(t, a, b) end)
    else
        table.sort(keys)
    end

    -- return the iterator function
    local i = 0
    return function()
        i = i + 1
        if keys[i] then
            return keys[i], t[keys[i]]
        end
    end

返回函式參考