0
<?hh //strict 

foreach ($list as $id) {
    $items = new DestinationsByCountry($id);
    $remapped = $items->byKey('destination_id')->map($stringed ==> (int) $stringed);
    $this->ids->addAll($remapped);
}

foreach ($list as $id) {
    $this->ids->addAll(
        // ******* error line below *******
        new DestinationsByCountry($id)
            ->byKey('destination_id')
            ->map($stringed ==> (int) $stringed)
    );
}

どちらもタイプチェッカーには問題ありませんが、2 番目は致命的なエラーを引き起こします

致命的なエラー: 構文エラー、予期しない T_OBJECT_OPERATOR、')' が必要です

4

1 に答える 1

1

上記のコメントで指摘されているように、(new DestinationsByCountry($id))PHP と Hack 構文の両方で を括弧で囲む必要があります。

タイプチェッカーが文句を言わないのは、トップレベルでコードをタイプチェックしないからです。これが関数またはメソッド内にあった場合、タイプチェッカーがエラーを検出したと思います。このコードが実際に関数またはメソッド内にある場合は、GitHub で問題を報告してください。

于 2016-02-20T18:40:45.413 に答える