При обсуждении генераторов Javascript кто-то приготовил интересную функцию:
function *foo() {
var y = 1;
while(true) yield (y = (y * (yield)));
}
Теперь эту функцию можно использовать через:
var results = [];
var bar = foo();
bar.next();
results.push(bar.next(2));
bar.next();
results.push(bar.next(2));
bar.next();
results.push(bar.next(2));
bar.next();
results.push(bar.next(2));
Как мы видим, чтобы получить следующий продукт, нам нужно дважды позвонить next
. Вопрос в том, можно ли это как-то решить одним выходом?