jam*_*ima 3 php overriding generator
我在类中有一个方法可以产生几个值。调用时parent::generator_function()不会产生值。如何产生它们
class Papa
{
public function generator_function()
{
yield 1;
yield 2;
yield 3;
}
}
class Child extends Papa
{
public function generator_function()
{
parent::generator_function();
yield 4;
}
}
$child = new Child();
foreach ($child->generator_function() as $value) {
echo "$value\n";
};
Run Code Online (Sandbox Code Playgroud)
只需调用即可parent::generator_function()为您提供一个生成器,而您无需对其进行任何操作。在一个生成器中,您可以通过 委托给另一个生成器yield from。
在 PHP 7 中,生成器委托允许您使用Yield from关键字从另一个生成器、Traversable 对象或数组生成值。然后,外部生成器将从内部生成器、对象或数组生成所有值,直到它们不再有效,之后将在外部生成器中继续执行。
例如:
class Child extends Papa
{
public function generator_function()
{
yield from parent::generator_function();
yield 4;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
649 次 |
| 最近记录: |