Referência › Referência de funções › Functions

Functions.collections.spairs

pública

Chame como

Functions.collections.spairs(t, order)

Registre-a como uma dependência chamada Functions.collections.spairs (aceitar o preenchimento automático faz isso) e depois chame-a por esse nome.

O que faz

Cria um iterador sobre um instantâneo ordenado das chaves de uma tabela. A ordem padrão compara as chaves; um callback de ordem personalizado recebe a tabela original e duas chaves. Os valores são lidos da tabela original quando cada chave é produzida. O iterador antigo termina quando a próxima chave capturada é nil ou false.

Argumentos

NomeTipoO que faz
ttableTabela a percorrer; as chaves precisam ser comparáveis entre si quando nenhuma ordenação personalizada é fornecida.
orderfunction | nilCallback de ordenação opcional chamado como order(t, leftKey, rightKey).

Retornos

1functionIterador que produz uma chave capturada e o valor atual dela na tabela, ou nenhum valor quando esgotado.

Edições

As funções auxiliares integradas são registradas em todas as edições. O que muda é a API do jogo que elas leem; quando uma está ausente, a função auxiliar recorre a uma alternativa ou retorna nil com um motivo.

Não lê nenhuma API do jogo diretamente.

Exemplo

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

Código-fonte

Functions/collections.lua, linha 38. Somente leitura no jogo; Duplicar cria uma cópia editável.

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

Voltar para Referência de funções