HHVM 3.9 は、名前付き関数を使用した 3 項ステートメントのファンではありませんがfun()
、3.10 以上であればまったく問題ありません。ただし、3.9は具体的な関数から返された名前付き関数を受け入れ、他の関数 ( 3v4l )に渡された名前付き関数を受け入れているため、これは数少ないケースの 1 つであるように思われます。
<?hh
echo ((() ==> fun('strlen'))())('Hello'); // 5
echo (($f, $v) ==> $f($v))(strlen, 'Hello'); // 5 + Notice: Use of undefined constant strlen - assumed 'strlen'
echo (true ? strlen : intval)('100'); // Fatal error: syntax error, unexpected '(', expecting ',' or ';' on line 3
3.9 と 3.10 の間で何が変わったのですか? HHVM ≥3.10 で、名前付き関数をこの方法で参照および使用できない場合はありますか?