我以前从未在PHP中使用过生成器,并且中没有显示返回类型声明的示例。
在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
用于返回类型声明是否合适?
答案 0 :(得分:0)
您的返回类型为Generator
,但是您正在使用void
。试试这个
public function getDataIncrementally(): Generator {
yield from [/* some large set of numbers*/];
}