У меня когда-то была такая функция:
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()
нет, я не могу понять, как это сделать. Может быть, вы можете мне помочь?