Riferimento › Riferimento delle funzioni › Functions

Functions.collections.spairs

pubblica

Chiamala come

Functions.collections.spairs(t, order)

Registrala come dipendenza chiamata Functions.collections.spairs (accettare il completamento lo fa per te), poi chiamala con quel nome.

Cosa fa

Crea un iteratore su un'istantanea ordinata delle chiavi della tabella. L'ordinamento predefinito confronta le chiavi; una callback di ordinamento personalizzata riceve la tabella originale e due chiavi. I valori vengono letti dalla tabella originale quando ciascuna chiave viene restituita. L'iteratore precedente termina quando la successiva chiave acquisita è nil o false.

Argomenti

NomeTipoCosa fa
ttableTabella da attraversare; le chiavi devono essere confrontabili tra loro quando non viene fornito un ordinamento personalizzato.
orderfunction | nilCallback di ordinamento facoltativa, chiamata come order(t, leftKey, rightKey).

Valori restituiti

1functionIteratore che restituisce una chiave acquisita e il valore attuale nella tabella, oppure nessun valore quando è esaurito.

Edizioni

Le funzioni di supporto integrate sono registrate su ogni edizione. Ciò che cambia è l'API di gioco che leggono; dove ne manca una, la funzione di supporto ripiega su un'alternativa o restituisce nil con un motivo.

Non legge direttamente alcuna API di gioco.

Esempio

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

Sorgente

Functions/collections.lua, riga 38. Nel gioco è in sola lettura; Duplica crea una copia modificabile.

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

Torna a Riferimento delle funzioni