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
| Nom | Type | Ce qu'elle fait |
|---|---|---|
t | table | Table à parcourir ; les clés doivent être comparables entre elles en l'absence d'ordre personnalisé. |
order | function | nil | Fonction d'ordre facultative, appelée sous la forme order(t, leftKey, rightKey). |
Retours
| 1 | function | Ité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 falseSource
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