Lua: Le tutoriel  wxWidgets
Lua
Les itérateurs: La sémantique des for génériques.

L'inconvénient avec les itérateurs précédents est que vous devrez créer une nouvelle clôture pour chaque nouvelle boucle.

Mais dans la plupart des situations, ce ne sera pas un réel problème.

Dans l'exemple précédent, ( l'itérateur TousLesMots() ), le coût de la création d'une clôture simple est négligeable comparé au coût de la lecture d'un fichier entier.

Cependant, dans certaines situations ce surcoût peut être indésirable.

Et c'est là que les "génériques" interviennent.

Le générique conserve trois valeurs:
  • la fonction d'itération,
  • un état constant,
  • et une variable de contrôle.
La syntaxe générale pour le for générique est la suivante.
	for .. liste .. in .. expression .. do
		... corps ...
	end
				

liste est une liste d'un ou plusieurs noms de variables, séparés par des virgules, et expression est une liste d'une ou plusieurs expressions, aussi séparées par des virgules.

Le plus souvent, la liste d'expressions ne possède qu'un seul élément.

Par exemple, dans le code
	for k, v in pairs(t) do
		print(k, v)
	end
				

La liste des variables est k et v, la liste d'expressions possède des paires de l'élément (t).
La liste des variables peut aussi avoir une seule variable, comme dans

	for line in io.lines() do
		io.write(line, '\n')
	end
				

Ce code appelle la première variable de la liste.
Sa valeur n'est jamais nil pendant la boucle, parce que lorsqu'elle devient nil la boucle se termine.

La première chose que fait le for, est d'évaluer les expressions après le in.

Ces expressions aboutissent dans les trois valeurs conservées par le for: la fonction d'itération, l'état invariant, et la valeur initiale de la variable de contrôle.

Comme dans une affectation multiple, seul le dernier élément de la liste peut se traduire par plus d'une valeur, et le nombre de valeurs est ajusté à trois, les valeurs supplémentaires seront jetées ou initialisées à nil.

Après cette étape d'initialisation, for appelle la fonction itératrice avec deux arguments: l'état invariant et la variable de contrôle.

Puis for assigne les valeurs retournées par la fonction itératrice dans les variables déclarées par la liste de variables.

Si la valeur retournée est nil, alors la boucle prend fin.

Sinon, for répète le processus.

logo wxWidgets Le savoir ne vaut que s'il est partagé par tous...
logo-internet_32x32.png Dernière mise à jour, le 20 novembre 2012.
Valid XHTML 1.0 Transitional

wxlualogo
Flèche haut
Flèche gauche
Flèche haut
Flèche droite
Connexion à la base de données impossible