PHP:在也是发电机的函数中创建一个附加的发电机(供参考传递)

时间:2018-10-27 10:01:23

标签: php generator yield

我曾经有过类似以下的功能:

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(),所以我不知道该怎么做。也许你可以帮我吗?

0 个答案:

没有答案