Aufruf als
Functions.collections.spairs(t, order)
Erfassen Sie sie als Abhängigkeit mit dem Namen Functions.collections.spairs (das Übernehmen der Vervollständigung erledigt das) und rufen Sie sie dann unter diesem Namen auf.
Was sie bewirkt
Einen Iterator über eine sortierte Momentaufnahme der Tabellenschlüssel erstellen. Die Standardreihenfolge vergleicht Schlüssel; ein benutzerdefinierter Sortier-Callback erhält die ursprüngliche Tabelle und zwei Schlüssel. Werte werden aus der ursprünglichen Tabelle gelesen, wenn der jeweilige Schlüssel geliefert wird. Der alte Iterator endet, wenn der nächste erfasste Schlüssel nil oder false ist.
Argumente
| Name | Typ | Was sie bewirkt |
|---|---|---|
t | table | Zu durchlaufende Tabelle; ohne benutzerdefinierte Sortierung müssen die Schlüssel untereinander vergleichbar sein. |
order | function | nil | Optionaler Sortier-Callback, aufgerufen als order(t, leftKey, rightKey). |
Rückgabewerte
| 1 | function | Iterator, der einen erfassten Schlüssel und seinen aktuellen Tabellenwert liefert, oder keine Werte, wenn er erschöpft ist. |
|---|
Editionen
Integrierte Hilfsfunktionen werden auf jeder Edition registriert. Unterschiedlich ist die Spiel-API, die sie lesen; fehlt eine, weicht die Hilfsfunktion aus oder gibt nil mit einem Grund zurück.
Sie liest keine Spiel-API direkt.
Beispiel
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 falseQuelle
Functions/collections.lua, Zeile 38. Im Spiel schreibgeschützt; Duplizieren erstellt eine bearbeitbare Kopie.
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