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
| Nombre | Tipo | Qué hace |
|---|---|---|
t | table | Tabla que se recorrerá; las claves deben ser comparables entre sí cuando no se proporciona un orden personalizado. |
order | function | nil | Callback de orden opcional llamado como order(t, leftKey, rightKey). |
Retornos
| 1 | function | Iterador 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 falseCó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