gpt4 book ai didi

php - `yield from $generator` 和 `return $generator` 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 01:47:37 30 4
gpt4 key购买 nike

我有一个返回生成器的函数。目前它使用yield from:

function foo()
{
$generator = getGenerator();
// some other stuff (no yields!)
yield from $generator;
}

如果我用简单的return替换yield from,在这种情况下会改变什么吗?也许在执行中?还是性能? yield from 是否会生成一个新的“外部”迭代器?

我知道,在其他情况下,yield from 可以更灵活,因为我可以多次使用它,甚至可以将它与简单的 yield 混合,但这并不对我来说很重要。

最佳答案

当您像上面那样在方法末尾使用 yield from 时,这不会改变该方法返回的内容。但方法内部的代码仍然存在差异:在迭代开始时回滚迭代器时会调用 yield from 之前的任何代码,而 return 之前的代码会被调用。 code> 在调用该函数时执行,因为该函数现在只是一个普通函数(实际上,这不是 yield from 特有的。它是 yield 的行为。证明见 https://3v4l.org/jnPvC)。

yield from 的一大优点是您可以在函数中多次使用它,它将所有迭代器的值组合到一个迭代器中。

关于php - `yield from $generator` 和 `return $generator` 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37188263/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com