Hack で少し遊んで、yield
キーワードを使用してジェネレーター関数を作成しようとしました。ドキュメントには、そのような関数の戻り値の型はContinuation
インターフェイスである必要があると記載されています。ただし、hh_client
ジェネレーター関数のソース コード例を実行すると、次の出力が得られます。
./test.php:4:3,7: 無効な yield (Typing[4110])
./test.php:3:17,28: これはタイプ Continuation のオブジェクトです
./test.php:4:3,7 : Generator 型のオブジェクトとは互換性がありません (本体に「yield」を含む関数の結果)
これはtest.phpです:
<?hh
function gen(): Generator<int> {
yield 1;
yield 2;
yield 3;
}
function foo(): void {
foreach (gen() as $x) {
echo $x, "\n";
}
}
foo();
結果タイプを に変更すると、Generator
さらに多くの警告が表示されます。ジェネレーター関数を入力する正しい方法は何ですか?