呼叫方式
Functions.collections.spairs(t, order)
將它記錄為名為 Functions.collections.spairs 的相依項目(接受自動完成即可完成此步驟),然後以該名稱呼叫。
作用
建立一個走訪表格鍵排序快照的迭代器。預設依鍵排序;自訂排序回呼會收到原始表格與兩個鍵。每次產出一個鍵時,值從原始表格中讀取。當下一個擷取的鍵為 nil 或 false 時,舊版迭代器結束。
參數
| 名稱 | 類型 | 作用 |
|---|---|---|
t | table | 要走訪的表格;未提供自訂排序時,鍵之間必須可以相互比較。 |
order | function | nil | 選擇性的排序回呼,以 order(t, leftKey, rightKey) 的形式呼叫。 |
傳回值
| 1 | function | 產出一個擷取的鍵及其目前表格值的迭代器;耗盡時不產出任何值。 |
|---|
版本
內建輔助函式在每個版本上都會註冊。不同的是它們讀取的遊戲 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