Php “来自$generator的收益率”和“返回$generator”之间的差异?
我有一个函数,返回一个生成器。目前,它使用了来自的收益率:Php “来自$generator的收益率”和“返回$generator”之间的差异?,php,return,generator,yield-from,Php,Return,Generator,Yield From,我有一个函数,返回一个生成器。目前,它使用了来自的收益率: function foo() { $generator = getGenerator(); // some other stuff (no yields!) yield from $generator; } 如果我用一个简单的返回值替换从得到的收益,在这种情况下会有什么变化吗?也许在行刑的时候?还是表演?yield from是否生成新的“外部”迭代器 我知道,在其他情况下,yield from可以更灵活,因为我
function foo()
{
$generator = getGenerator();
// some other stuff (no yields!)
yield from $generator;
}
如果我用一个简单的返回值
替换从得到的收益,在这种情况下会有什么变化吗?也许在行刑的时候?还是表演?yield from
是否生成新的“外部”迭代器
我知道,在其他情况下,yield from
可以更灵活,因为我可以多次使用它,甚至可以将它与简单的yield
s混合使用,但这对我的情况并不重要。当你像上面那样在方法末尾使用yield from
一次时,这不会改变方法返回的内容。但是方法内部的代码仍然存在差异:在迭代开始时回放迭代器时,调用yield from
之前的任何代码,而在调用函数时执行return
之前的代码,因为此函数现在只是一个普通函数(实际上,这并不特定于来自
的收益率。这是收益率的行为。有关证明,请参阅)
yield from
的最大优点是,您可以在函数中多次使用它,它将所有迭代器的值组合成一个迭代器。在您的例子中,将yield from
更改为return
会得到相同的结果。但是,如果在return
之前有yield
语句,它就赢了't组合来自getGenerator()
的值
输出:
testing gen_2
1
testing gen_3
2
testing gen_4
2
1
请阅读与使用yield from
后跟迭代器\u to_array()
testing gen_2
1
testing gen_3
2
testing gen_4
2
1