我曾经有过类似以下的功能:
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()
,所以我不知道该怎么做。也许你可以帮我吗?