【入門編】Hackの『Type Refinement』を最大限に活かすための条件分岐の書き方 – Hack言語 コア・静的型システムとHHVMのアーキテクチャ解析バイブル

こんにちは!Hack言語の世界へようこそ。
他の言語、例えばPHPやJavaScriptからやってきた開発者にとって、Hackの厳格な静的型システム(Strict Mode)は、最初は少し窮屈に感じるかもしれません。「あれもこれも型を明示しろと言われる……」なんて途方に暮れていませんか?

でも、安心してください。ここをクリアすれば、あなたの書くコードは圧倒的に堅牢になり、HHVM(HipHop Virtual Machine)の最適化能力を極限まで引き出せるようになります。

今回は、Hackの型チェッカーを味方につけ、コードの安全性を保ちながらスマートに型を絞り込む「Type Refinement(型絞り込み)」の極意を、優しく紐解いていきますよ。ここをマスターすれば、Hackの基本はバッチリマスターできたも同然です!

—

1. Type Refinement(型絞り込み)とは何か?

私たちがコードを書くとき、「この変数は `int` かもしれないし、`null` かもしれない」「インターフェース型で受け取ったけれど、実際のインスタンスはこの具象クラスのどれかだ」という状況に頻繁に遭遇しますよね。

動的言語であれば、実行時に `is_null()` や ` instanceof` を使ってその都度チェックするのが普通です。しかし、HackのStrict Modeでは、型が曖昧なままプロパティにアクセスしたりメソッドを呼び出したりすると、型チェッカーが容赦なくエラーを叩きつけます。

ここで登場するのが Type Refinement(型絞り込み) です。
Hackの型チェッカーは非常に賢く、コード中の `if` 文や `invariant` などの条件分岐を静的に解析(

タイトルとURLをコピーしました