我想使用一些使用Generator
s 作为返回类型和引用的方法。但是,问题是一个方法获取另一个方法的返回值,即按引用返回并且是 a Generator
,并按引用返回它。另外,几乎所有方法在产生一个或多个值后都会返回一个值。
让我们看一个代码:
class YieldFromByReferenceTest
{
public $data = [
"Ubuntu",
"CentOS",
"Fedora"
];
protected function &sampleGenerator(): \Generator
{
foreach ($this->data as $key => &$datum) {
yield $key => $datum;
}
// This is just a sample return type
return true;
}
public function &useGenerator(): \Generator
{
$generator = $this->sampleGenerator();
// Return $generator?
}
}
首先,yield from
出现在我的脑海中。但是,当我尝试使用它时,它给了我以下错误:
PHP Fatal error: Cannot use "yield from" inside a by-reference generator in ./test.php on line xx
这对我来说看起来很奇怪。我不知道为什么它不起作用(在我看来,它应该起作用)。所以,我的问题是:
在这种情况下,为什么
yield from
不能按预期工作并产生错误?它不应该工作吗?有哪些替代解决方案?
谢谢!