LoriotPro Extended Edition Programmation en language LUA

Table des matières

HelpLUA

Itération avec LUA

 
 


L'utilisation de l'itération for a été abordé dans le le document Itération sur les tables et boucle For.

Ce document complète par quelques notes le moyen d'écrire vos propres iteration.

Algorithme

Nous pouvons écrire nos propres iteration à s'appeler par for le rapport. Le pseudo-code suivant de Lua décrit commentfonctionne for avec des iterations :

faites l'iterator local, état, var1 = explist var2 local..., varn tandis que vrai font var1..., le varn = l'iterator(state, var1) si zéro du == var1 cassent alors l'extrémité -- pour l'extrémité d'extrémité de code de bloc

L'état et la valeur principale courante sont passés dans l'iterator. L'iterator renvoie la nouvelle valeur de la clef et de toutes les autres valeurs, par exemple la valeur produite par l'iterator. Si nil est retourné alors for la boucle est terminée.

Exemple simple

L'iterator suivant renverra un ordre des valeurs carrées. Quand nous ne renvoyons aucune valeur (c.-à-d. n>=state), Lua retourne nil qui termine l'itération. Notez que l'iterator renvoie la prochaine valeur dans l'ordre pour une itération donnée. Nous employons state pour tenir le nombre d'itérations que nous souhaitons effectuer.


> square(state de fonction, n) si n<state puis n=n+1 n de
retour, extrémité d'extrémité de n*n

Voici for le rapport appelle l'iterator :


> pour i,n dans la place, 5, 0 faites le print(i, n)
l'extrémité 1 1 2 4 3 9 4 16 5 25

Nous pourrions conclure l'exemple ci-dessus (comme pairs()) et fournir squares(nbvals) une fonction de constructeur d'iterator. Par exemple,

> place de retour de squares(nbvals) de fonction, nbvals, 0 extrémités -- iterator, état, valeur initiale

Maintenant nous pouvons l'appeler le souhaitons pairs():

> pour i,n en squares(5) faites le print(i, n) l'extrémité 1 1 2 4 3 9 4 16 5 25



LUTEUS www.loriotpro.com