不完全なパターンマッチを絶対に許さない!方法
「パターンマッチが不完全な場合に、警告ではなくコンパイルエラーにする方法はあるのですか?」と個人的にご質問を頂いたので、回答のついでにブログにも書いてみることにしました。随分と久しぶりの記事になってしまいました。。
結論から言うと、コンパイラオプションを指定する方法があります。
まず、以下のようなコードがあったとします。
type Foo = A | B | C let foo = function | A -> "A" | B -> "B"
このコードをコンパイルしてみると、以下のように警告されるものの、一応コンパイルは成功します。
警告 FS0025: この式のパターン マッチが不完全です たとえば、値 'C' はパターンに含まれないケースを示す可能性があります。この場合、foo C として評価すると例外(Microsoft.FSharp.Core.MatchFailureException)が発生してしまいます。
以下、コンパイラオプションの指定方法です。
Visual Studio の場合
まず、ソリューションエクスプローラーからF#プロジェクトのプロパティを開きます。
そして、[ビルド]タブを見てみると[警告をエラーとして扱う]という、
それっぽい雰囲気が出ている欄があります。
胸の高鳴りを抑えつつ[特定の警告]を選択してみると、入力欄が出現します。
そこに、対象となる警告番号の25という値を入力し、プロパティを保存します。
この状態でビルドしてみると、今度はコンパイルエラーが発生するようになります。
エラー FS0025: この式のパターン マッチが不完全です たとえば、値 'C' はパターンに含まれないケースを示す可能性があります。
まとめ
北海道寒い。