Les générateurs Générateur
Dit simplement, un générateur
est une fonction renvoyant un itérateur. Commençons
donc par présenter ce qu’est un itérateur.
Il s’agit d’un objet possédant une interface
permettant de : Itérateur
-
connaître
sa valeur courante ;
-
se déplacer à la
valeur suivante ;
-
savoir si l’on a atteint
la fin de l’itérateur.
Plusieurs implémentations sont possibles
; voici par exemple une fonction permettant, à partir d’un
tableau donné, d’obtenir un itérateur
pour le parcourir :
const getArrayIterator = array => {
let index = -1
return {
next() {
index++
return {
value: array[index],
done: index === array.length,
}
},
}
}
Ici, les trois actions propres à l’itérateur
sont faites au sein d’une seule fonction next, qui renvoie un objet contenant
l’attribut value avec la
valeur courante et l’attribut done qui
est à true si on est au
bout.
La manière la plus naturelle d’utiliser
cet itérateur est par une boucle while :
let res
do {
res = it.next()
console.log(res)
} while (!res.done)
Notez qu’un itérateur n’est
pas nécessairement fini. Il peut ...