JavaScriptте итераторлордун бир жолку иштеши
Ар бир итератор циклге бир гана жолу катыша алат. Бул бир аз күтүлбөгөн нерсе,
бирок логикалуу - анткени өтүп кеткен итератор өзүнүн done параметрин false кылат,
демек ал дагы эле кайталана албайт.
Келгиле, муну текшерип көрөлү. Бизде төмөнкүдөй генератор бар деп коёлу:
javascriptfunction *func() {
yield 1;
yield 2;
yield 3;
}
Итераторду түзөлү:
javascriptlet iter = func();
Итераторду бир цикл менен кайталайлы:
javascriptfor (let elem of iter) {
console.log(elem); // 1, 2, 3
}
Эми итераторду эки цикл менен кайталайлы:
javascriptfor (let elem of iter) {
console.log(elem); // 1, 2, 3
}
for (let elem of iter) {
console.log(elem); // иштейт эмес
}
Маселени чечүү үчүн ар бир жаңы цикл үчүн өзүнүн итераторун түзүш керек:
javascriptlet iter1 = func();
for (let elem of iter1) {
console.log(elem); // 1, 2, 3
}
let iter2 = func();
for (let elem of iter2) {
console.log(elem); // 1, 2, 3
}
Биз жөнөкөйлөтө алабыз:
javascriptfor (let elem of func()) {
console.log(elem); // 1, 2, 3
}
for (let elem of func()) {
console.log(elem); // 1, 2, 3
}
Задание 1
Төмөнкү коддогу катаны оңдоп, бергиле:
javascriptfunction *func() {
for (let i = 1; i <= 3; i++) {
yield i;
}
}
let elems = func();
for (let elem of elems) {
console.log(elem);
}
for (let elem of elems) {
console.log(elem);
}