差分
ナビゲーションに移動
検索に移動
// barbazが表示される
echo $fn('baz');
}
</source>
===newtype===
Hackには[[C++]]の[[typedef]]のようなものが搭載されている。
<source lang="php">
newtype RoofRaised = float;
</source>
「[[Bjarne Stroustrup インタビュー]]」の一説で、「RoofRaised って何だと思って、長い時間をかけてヘッダーファイルを調べてみたら、ただの double だった、なんてことがよくあったでしょ。大規模なプロジェクトのすべてのクラスで暗黙の typedef を見つけ出すのにどれくらい時間がかかると思う? 」などと馬鹿にされたアレである。
一方、Hackのnewtypeは若干良くなっており、既存の型に制約を与えるための物として機能する。
<source lang="php">
<?hh
// email型を宣言
newtype email = string;
// 引数mailに渡す値は、email型に明示的にキャストしていないとエラーになる。
function setName(email $mail) : void
{
}
</source>