JS - Chapitre 13 - Generators Flashcards

1
Q

Qu’est-ce qu’un générator

A

C’est une méthode qui renvoi la valeur suivante dans une sequence à chaque fois qu’on l’appelle

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Exemple de generator infinie

A

function range() {
let count = 0;
return function() {
const result = count;
count += 1;
return result;
}
}

utilisation

const nextNumber = range();
console.log(nextNumber());

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

generator finite

A

si on fait un range entre start et end à la fin il renvoie undefined

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

pour créer un tableau à partir d’un génerateur (exemple de toArray sur range)

A

function toArray(generate) {
let arr = [];
let value = generate();
while (value != undefined) {
arr = […arr, value];
value = generated();
}
return arr;
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

exemple d’une méthode forEach curried pour avoir un generateur et une méthode appliqué à chaque

A

function forEach(callback) {
return function(generate) {
let value = generate();
while (value != undefined) {
callback(value);
value = generate();
}
}
}

Utilisation:
forEach(log)(range(1,4));

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

méthode take qui prend le n éléments d’une séquence

A

function take(n) {
return function (generate) {
let count = 0;
return function() {
if (count < n) {
count += 1;
return generate();
}
}
}
}

utilisation take(n)(sequence)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Exemple d’utilisation de pipe pour prendre 3 valeurs sur un range infini

A

pipe(
take(3),
forEach(console.log)
)(range());

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Exemple du generator de la suite de Fibonacci

A

function fibonacci() {
let a = 0;
let b = 1;
return function() {
const aResult = a;
a = b;
b = aResult + b;
return aResult;
};
}

Utilisation:

pipe(
take(5),
forEach(console.log)
)(fibonacci());

How well did you know this?
1
Not at all
2
3
4
5
Perfectly