Silmukat generaattoreissa JavaScriptissä
Generaattoreiden sisällä voidaan käyttää
silmukoita. Samalla voimme pysäyttää silmukoita
käyttämällä yield. Katsotaanpa
esimerkkiä. Pysäytämme
silmukan jokaisella iteraatiolla:
function *func() {
for (let i = 1; i <= 3; i++) {
yield i;
}
}
Saamme iteraattorin:
let iter = func();
Tarkistetaan iteraattorimme toiminta:
console.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: undefined, done: true}
Luo iteraattori, jonka jokainen kutsu
palauttaa numerot 10:stä
nollaan.
Tee generaattori, joka ottaa parametrikseen luvun. Jokaisen iteraattorin kutsun tulee vähentää lukua yhdellä, kunnes nolla saavutetaan.
Tee generaattori, joka ottaa parametrikseen luvun. Jokaisen iteraattorin kutsun tulee vähentää lukua puoleen ja palauttaa tulos. Ja niin, kunnes luku tulee pienemmäksi kuin yksi.
Tee iteraattori, jonka jokainen kutsu palauttaa seuraavan kahden potenssin.
Tee iteraattori, jonka jokainen kutsu palauttaa seuraavan Fibonaccin luvun.