Referencia › Referencia de funciones › Functions

Functions.collections.spairs

pública

Llamar como

Functions.collections.spairs(t, order)

Regístrala como dependencia con el nombre Functions.collections.spairs (aceptar la sugerencia de autocompletado lo hace por ti) y luego llámala con ese nombre.

Qué hace

Crea un iterador sobre una instantánea ordenada de las claves de una tabla. El orden predeterminado compara las claves; un callback de orden personalizado recibe la tabla original y dos claves. Los valores se leen de la tabla original al devolver cada clave. El iterador antiguo termina cuando la siguiente clave capturada es nil o false.

Argumentos

NombreTipoQué hace
ttableTabla que se recorrerá; las claves deben ser comparables entre sí cuando no se proporciona un orden personalizado.
orderfunction | nilCallback de orden opcional llamado como order(t, leftKey, rightKey).

Retornos

1functionIterador que devuelve una clave capturada y su valor actual en la tabla, o ningún valor cuando se agota.

Ediciones

Las funciones auxiliares integradas se registran en todas las ediciones. Lo que cambia es la API del juego que leen; donde falta alguna, la función auxiliar recurre a una alternativa o devuelve nil con un motivo.

No lee directamente ninguna API del juego.

Ejemplo

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 fuente

Functions/collections.lua, línea 38. Solo lectura en el juego; Duplicar crea una copia editable.

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

Volver a Referencia de funciones