Sommaire

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 ...