J'ai une variable comme suit
local armies = {
[1] = "ARMY_1",
[2] = "ARMY_3",
[3] = "ARMY_6",
[4] = "ARMY_7",
}
Maintenant, je veux faire une action pour chaque valeur. Quelle est la meilleure façon de parcourir les valeurs? La chose typique que je trouve sur Internet est la suivante:
for i, armyName in pairs(armies) do
doStuffWithArmyName(armyName)
end
Je n'aime pas cela car il en résulte une variable inutilisée i
. L'approche suivante évite cela et c'est ce que j'utilise actuellement:
for i in pairs(armies) do
doStuffWithArmyName(armies[i])
end
Cependant, ce n'est toujours pas aussi lisible et simple que je le souhaiterais, car cela itère sur les clés et obtient ensuite la valeur en utilisant la clé (plutôt impérativement). Un autre avantage que j'ai avec les deux approches est que pairs
est nécessaire. La valeur bouclée ici est celle sur laquelle j'ai le contrôle, et je préférerais qu'elle puisse être bouclée aussi facilement que possible.
Existe-t-il une meilleure façon de faire une telle boucle si je ne me soucie que des valeurs? Existe-t-il un moyen de répondre aux préoccupations que j'ai énumérées?
J'utilise Lua 5.0 (et je suis assez nouveau dans la langue)
La manière idiomatique d'itérer sur un tableau est la suivante:
for _, armyName in ipairs(armies) do
doStuffWithArmyName(armyName)
end
Notez que:
ipairs
sur pairs
pour les tableaux_
comme espace réservé.Si, pour une raison quelconque, ce _
l'espace réservé vous concerne toujours, créez votre propre itérateur. Programmation en Lua le fournit comme exemple:
function values(t)
local i = 0
return function() i = i + 1; return t[i] end
end
Usage:
for v in values(armies) do
print(v)
end