PHP: создать дополнительный генератор в функции, которая также является генератором (для передачи по ссылке) - PullRequest
0 голосов
/ 27 октября 2018

У меня когда-то была такая функция:

function f(array $xs, &$responsesOut): array { // note the &
   $ys = [];
   $responsesOut = [];
   foreach ($xs as $x) {
      $response = getResponse($x);
      $ys[] = extractYFromResponse($response);
      $responsesOut[] = $response;
   }
   return $ys;
}

Это работало хорошо, пока я не столкнулся с проблемами с памятью. Поэтому я использовал Генератор для f относительно $ys:

function f(array $xs, &$responsesOut): iterable {
   $responsesOut = [];
   foreach ($xs as $x) {
      $response = getResponse($x);
      yield extractYFromResponse($response);
      $responsesOut[] = $response;
   }
}

Это работает, но, очевидно, не в отношении $responsesOut (поскольку эта часть не изменилась). Теперь я хочу привязать Generator (вместо массива) к $responsesOut. Но, учитывая, что new Generator() нет, я не могу понять, как это сделать. Может быть, вы можете мне помочь?

...