Referenz › Funktionsreferenz › Functions

Functions.collections.spairs

öffentlich

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

NameTypWas sie bewirkt
ttableZu durchlaufende Tabelle; ohne benutzerdefinierte Sortierung müssen die Schlüssel untereinander vergleichbar sein.
orderfunction | nilOptionaler Sortier-Callback, aufgerufen als order(t, leftKey, rightKey).

Rückgabewerte

1functionIterator, 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 false

Quelle

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

Zurück zu Funktionsreferenz