Est-ce qu'il y a des cas qu'on ne peut que traiter avec un générateur?
je n'en ai pas en tête.
Mais, dans ton cas où tu implémentes ta fonction forEach, syntaxiquement, ce n'est pas reconnu par JS comme étant un générateur, quand bien même ton forEach serait "lazy". Ton forEach n'est pas une manière standard de faire un Iterateur.
D'ailleurs avec ton implementation de forEach pour les nombres premiers, je ne suis pas vraiment fan. Par exemple, je veux récupérer les 10 premiers nombres premiers. Je suis obligé de faire
var primes = createPrimes();
var i = 10;
var sum = 0;
try {
primes.forEach(function (np){
// do something with np
sum += np;
// finished ?
if (--i == 0) {
throw new Error("stop")
}
});
}
catch(e){
// ne pas oublier le catch, sinon...
}
Alors que si createPrimes() retournait un iterateur ou génerateur
var primes = createPrimes();
var i=0;
var sum = 0;
var np = primes.next();
while ( --i>0 && !np.done){
// do something with np
sum += np.value;
// next...
np = primes.next();
}
Pour moi la solution avec iterateur/générateur me semble plus compacte et lisible...
[^] # Re: Chouette
Posté par Laurent J (site web personnel, Mastodon) . En réponse à la dépêche ECMAScript 2015 est approuvé. Évalué à 3.
je n'en ai pas en tête.
Mais, dans ton cas où tu implémentes ta fonction forEach, syntaxiquement, ce n'est pas reconnu par JS comme étant un générateur, quand bien même ton forEach serait "lazy". Ton forEach n'est pas une manière standard de faire un Iterateur.
D'ailleurs avec ton implementation de forEach pour les nombres premiers, je ne suis pas vraiment fan. Par exemple, je veux récupérer les 10 premiers nombres premiers. Je suis obligé de faire
Alors que si createPrimes() retournait un iterateur ou génerateur
Pour moi la solution avec iterateur/générateur me semble plus compacte et lisible...