【发布时间】:2019-03-14 09:22:30
【问题描述】:
我使用 PhpStorm 在下面的函数中自动添加返回类型:
/**
* @return \Generator|null
*/
function yieldTest(): ?\Generator
{
yield from [1, 2, 3];
}
我的问题:为什么在\Generator 旁边添加null 选项?
我看不到返回 null 的方法,所以我想知道我是否忽略了 yield 工作方式的某些内容,或者这是否是 PhpStorm 方面的一个怪癖并且可以安全地放弃?
更新:
澄清一下 - 我在问为什么 PHPStorm 生成的返回类型为 ?\Generator。
我知道它随后将 null 添加到 php 文档 @return 标记中,因为在 ? 上。
更新 2:
这是生成额外位之前的测试文件的完整代码:
class yieldTestClass
{
public function yieldTest()
{
yield from [1, 2, 3];
}
}
这是从方法名称的上下文菜单中选择“声明返回类型”后的代码:
class yieldTestClass
{
public function yieldTest(): ?\Generator
{
yield from [1, 2, 3];
}
}
我不确定这是 IDE 中的本机功能还是来自插件,但如果是插件,我猜它会是 https://plugins.jetbrains.com/plugin/7622-php-inspections-ea-extended-
不管怎样,同样的问题。
【问题讨论】:
-
@AbcAeffchen 如果您直接调用它,它只会不断返回完整的
\Generator实例。如果您在事先检查完结果集后将其粘贴到 foreach 或其他任何内容中,它只会自动倒带。所以总的来说,我没有设法让它以我能想到的任何方式返回 null。 -
请在生成类型之前提供代码,以便任何人都可以在本地环境中尝试。也许不是 PhpStorm 做到了(而是其他一些插件,不是捆绑的)。为此,需要初始代码示例(所以我们都检查相同)。理想情况下是整个文件内容(以防它依赖于其他内容)。
-
好声,前后添加,以确保清晰@LazyOne