"Pour chaque" boucle dans une table lua avec des paires de valeurs de clé
Dire que j'ai une table est définie comme ceci:
myTable = { myValue = nil, myOtherValue = nil}
Comment itérer à travers elle dans une pour chaque mode de boucle comme ceci?
for key,value in myTable do --pseudocode
value = "foobar"
end
Aussi, si cela peut aider, je n'ai pas vraiment à la clé, juste de la valeur.
source d'informationauteur sFuller
Vous devez vous connecter pour publier un commentaire.
Clés qui n'ont aucune valeur (c'est à dire: sont
nil
) n'existent pas.myTable
est un vide table autant que Lua est concerné.Vous pouvez itérer sur une table vide, mais ça ne va pas être utile.
En outre:
Cette "pseudo-code" n'a pas de sens. Vous ne pouvez pas modifier une table en modifiant le contenu d'une variable locale; Lua ne fonctionne pas de cette façon. Vous ne pouvez pas obtenir une référence à une entrée de la table; vous ne pouvez obtenir un valeur de la table.
Si vous souhaitez modifier le contenu d'une table, vous devez réellement modifier la table. Par exemple:
Notez l'utilisation de
myTable
. Vous ne pouvez pas modifier une table sans l'aide de la table elle-même à un certain point. Si c'est la table comme accessible par le biais demyTable
ou par une autre variable que vous stocker une référence à la table.En général, la modification d'une table alors qu'il itérer il peut causer des problèmes. Cependant, Lua dit:
Il est donc parfaitement valide pour modifier la valeur d'un champ qui existe déjà. Et
key
évidemment existe déjà dans la table, de sorte que vous pouvez le modifier. Vous pouvez même le mettre ànil
sans problèmes.Variables en Lua ne sont rien de plus que les titulaires de valeurs. Les Tables contiennent des valeurs;
myTable[key]
renvoie une valeur. Vous pouvez stocker cette valeur dans une variable, mais en changeant la variable pas modifier la valeur demyTable[key]
. Étant donné que les tables sont stockées par référence, vous pouvez modifier le contenu du tableau dans une variable et de voir les changements dans l'autre, mais qui est tout simplement le contenu de la table, pas le tableau lui-même.