![]() |
Programmation en language LUA |
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.
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.
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
![]() |
|