Référence › Référence des fonctions › Functions

Functions.collections.spairs

publique

Appel

Functions.collections.spairs(t, order)

Enregistrez-la comme dépendance nommée Functions.collections.spairs (accepter la complétion le fait pour vous), puis appelez-la sous ce nom.

Ce qu'elle fait

Crée un itérateur sur un instantané trié des clés d'une table. L'ordre par défaut compare les clés ; une fonction d'ordre personnalisée reçoit la table d'origine et deux clés. Les valeurs sont lues dans la table d'origine au moment où chaque clé est produite. L'ancien itérateur s'arrête lorsque la clé capturée suivante est nil ou false.

Arguments

NomTypeCe qu'elle fait
ttableTable à parcourir ; les clés doivent être comparables entre elles en l'absence d'ordre personnalisé.
orderfunction | nilFonction d'ordre facultative, appelée sous la forme order(t, leftKey, rightKey).

Retours

1functionItérateur produisant une clé capturée et sa valeur actuelle dans la table, ou aucune valeur une fois épuisé.

Éditions

Les fonctions utilitaires intégrées sont enregistrées sur toutes les éditions. Ce qui diffère, c'est l'API du jeu qu'elles lisent ; quand l'une manque, la fonction utilitaire se rabat sur une alternative ou renvoie nil avec une raison.

Elle ne lit directement aucune API du jeu.

Exemple

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

Source

Functions/collections.lua, ligne 38. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.

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

Retour à Référence des fonctions