gpt4 book ai didi

php - 如果函数同时包含 return 和 yield,为什么 php 会返回一个空的生成器?

转载 作者:行者123 更新时间:2023-12-05 02:08:46 25 4
gpt4 key购买 nike

// Returns empty generator as expected.
function yieldOnly(): Generator
{
yield;
}

// Throws TypeError as expected.
function returnOnly(): Generator
{
return;
}

// Returns empty generator???
function returnAndYield(): Generator
{
return;
yield;
}

returnAndYield() 的返回值是一个空的Generator,尽管我原以为它会抛出一个TypeError。这是预期的行为吗?我在任何地方都找不到它的记录,想知道这是否是一个应该报告的潜在错误。

最佳答案

关于 generator syntax 的手册说如下:

Any function containing yield is a generator function.

因此,通过在其中使用 yield 关键字可以生成生成器函数。使用 return 关键字,您将退出用于构建生成器函数的函数。在这种情况下,它只是空的,因为在 return 语句之前没有 yield 行。当您使用以下源代码时:

function returnAndYield(): Generator
{
yield 1;
yield 2;
return;
yield 3;
yield 4;
}

$result = returnAndYield();
echo implode(',', iterator_to_array($result));

您将得到以下输出:

1,2

34 不在生成器中,因为函数在这些 yield 语句之前退出。

关于php - 如果函数同时包含 return 和 yield,为什么 php 会返回一个空的生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60608160/

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