Цитата:
Тоже самое, что перебирать [1, 2, 3]
function* () {
yield 1;
yield 2;
yield 3;
}
Тоже самое, что перебирать [1, 2, 3]
function* () {
for(var i = 1; i < 3; i++)
yield i;
}
Эти два примеры выше можно ведь легко переделать в бесконечный список... Тоже самое, что перебирать cycle([1, 2, 3])
function* () {
while(true) {
yield 1;
yield 2;
yield 3;
}
}
Тоже самое, что перебирать cycle([1, 2, 3])
function* () {
while(true) {
for(var i = 1; i < 3; i++)
yield i;
}
}
Этот последний пример можно переделать так... Тоже самое, что перебирать cycle([1, 2, 3])
function* () {
while(true) {
yield* [1, 2, 3];
}
}
|
Цитата:
|
Цитата:
У нас есть
function* () {
while(true) {
yield* [1, 2, 3];
}
}
мы можем уменьшить цикл на одну итерацию...
function* () {
yield* [1, 2, 3];
while(true) {
yield* [1, 2, 3];
}
}
и ещё...
function* () {
yield* [1, 2, 3];
yield* [1, 2, 3];
while(true) {
yield* [1, 2, 3];
}
}
и ещё...
function* () {
yield* [1, 2, 3];
yield* [1, 2, 3];
yield* [1, 2, 3];
while(true) {
yield* [1, 2, 3];
}
}
и ещё...
function* () {
yield* [1, 2, 3];
yield* [1, 2, 3];
yield* [1, 2, 3];
yield* [1, 2, 3];
while(true) {
yield* [1, 2, 3];
}
}
поскольку это бесконечный цикл, то полностью его невозможно размотать. UPD Цитата:
function* cycle(xs) {
yield* xs;
yield* cycle(xs);
}
можно попытаться раскрыть эту рекурсию...
function* cycle(xs) {
yield* xs;
yield* xs;
yield* cycle(xs);
}
и ещё...
function* cycle(xs) {
yield* xs;
yield* xs;
yield* xs;
yield* cycle(xs);
}
естественно при полном раскрытии (бесконечное кол-во строчек с yield* xs;) вы никогда не достигнете последнего yield* cycle(xs); то можно переписать так...
function* cycle(xs) {
while(true)
yield* xs;
}
Вы понимаете, что это одно и тоже определение, только без рекурсии?UPD 2 внутри тела функции-генератора... yield* xs;означает тоже самое, что for(const x of xs) yield x; Цитата:
while(true) for(const x of xs) yield x; |
Malleys,
ок, наверно на сейчас достаточно, приму как данность, пока для меня это магия и ниндзя стиль js, я могу это использовать, но нет понятия, почему это |
| Часовой пояс GMT +3, время: 23:52. |