9

我以前从未在 PHP 中使用过生成器,并且文档中没有显示返回类型声明的示例。

在 PhpStorm 中,当我这样做时,IDE 中出现错误:

public function getDataIncrementally(): void {
    yield from [/* some large set of numbers*/];
}

错误是:

生成器只能声明返回类型为 Generator、Iterator 或 Traversable,或 iterable,不允许使用 void。

我可以看到继承树是Traversable-> Iterator-> Generator。同时,iterable是 PHP 7.1 中引入的一种新的伪类型。

iterable如果我只需要支持 PHP >= 7.1,是否适合用于返回类型声明?

4

1 回答 1

8

您的返回类型是Generator,但您正在使用void. 尝试以下操作:

public function getDataIncrementally(): \Generator {
    yield from [/* some large set of numbers*/];
}
于 2019-02-09T06:35:18.023 回答