Votre problème est simple:
names = {'John', 'Joe', 'Steve'}
for names = 1, 3 do
print (names)
end
Ce code déclare une variable globale appelée names
. Ensuite, vous démarrez une boucle for. Pour la boucle déclare un local variable qui arrive juste à être appelés names
; le fait qu'une variable a déjà été défini avec names
est totalement hors de propos. Toute utilisation de l' names
à l'intérieur de la boucle for va se référer à la locale , et non global.
La boucle for est dit que la partie intérieure de la boucle seront appelés names = 1
, alors names = 2
, et, enfin, names = 3
. Pour la boucle déclare un compteur qui compte à partir du premier numéro de la dernière, et il va appeler l'intérieur du code une fois pour chaque valeur, il compte.
Ce que tu voulais, c'était quelque chose comme ceci:
names = {'John', 'Joe', 'Steve'}
for nameCount = 1, 3 do
print (names[nameCount])
end
[] La syntaxe est la façon dont vous accédez à des membres d'une table Lua. Lua tables de la carte "clés" de "valeurs". Votre tableau crée automatiquement des clés de type entier, qui augmentent. Donc, la clé associée à "Joe" dans le tableau 2 (Lua indices commencent toujours à 1).
Par conséquent, vous avez besoin d'une boucle for qui compte de 1 à 3, qui vous obtenez. Vous utilisez la variable nombre d'accéder à l'élément de la table.
Cependant, cela a une faille. Qu'advient-il si vous supprimez l'un des éléments de la liste?
names = {'John', 'Joe'}
for nameCount = 1, 3 do
print (names[nameCount])
end
Maintenant, nous obtenons John Joe nil
, en raison de la tentative d'accéder aux valeurs d'un tableau qui n'existe pas, les résultats en nil
. Pour éviter cela, nous avons besoin de compter de 1 à la longueur de la table:
names = {'John', 'Joe'}
for nameCount = 1, #names do
print (names[nameCount])
end
L' #
est la longueur de l'opérateur. Il fonctionne sur les tables et les chaînes, le retour de la longueur de soit. Maintenant, peu importe comment grand ou petit names
, ce le sera toujours.
Cependant, il y a un moyen plus pratique pour parcourir un tableau d'éléments:
names = {'John', 'Joe', 'Steve'}
for i, name in ipairs(names) do
print (name)
end
ipairs
Lua est un standard de la fonction qui effectue une itération sur une liste. Ce style de for
boucle, la variable d'itération de la boucle, utilise ce type de fonction d'itérateur. L' i
de la valeur est l'indice de l'entrée dans le tableau. L' name
de la valeur est la valeur à l'index. Donc, fondamentalement, ça fait beaucoup de gros du travail pour vous.