PHP生成器返回类型

时间:2019-02-09 06:28:16

标签: php iterator generator iterable php-generators

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

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

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

错误是:

  

生成器只能声明Generator,Iterator或Traversable的返回类型,或者不允许迭代的void。

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

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

1 个答案:

答案 0 :(得分:0)

您的返回类型为Generator,但是您正在使用void。试试这个

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