F#文法リファレンス - パターンマッチ
変数のパターンを判別し、適切な値を返します。C系言語のswitch文と似ています。
使用に適した状況
変数値に応じて何らかの値を返したい場合。条件に応じて処理の流れを変えたい場合。
サンプル
let IsNegative x = if x < 0 then true else false
//単純なパターンマッチ
let NumberShow x =
match IsNegative x with
| true -> printfn "指定された値はマイナスです。"
| false -> printfn "指定された値はプラスです。"
//パターンマッチを試す
NumberShow -10
NumberShow 10
文法
「match」キーワード、「対象」、「with」キーワード、| 値-> 戻り値の形式で書きます。「|」(縦棒)記号に続いて一致するパターンと返す値を、想定しているパターンの数だけ書きます。
解説
変数値に基づいて適切な値を返すのは、関数型プログラミングの基本です。もし、変数値を判定する手段がなければ、プログラミングできません。そんな関数型プログラミングの基本機能ですが、結構複雑です。
今回紹介したのは一番単純なパターンマッチです。C系言語のswitch文(多岐分岐)と似ていますが、パターンマッチはより柔軟かつ強力です。パターンマッチは、文章で説明し難く、文章だけで覚えるのは困難です。色々なパターンマッチを書いて覚えるのが得策でしょう。
パターンマッチは習得しにくいので、ヒントとして私の感覚を書きます。私はパターンマッチを、対象値のパターンから値を決定する機能だとイメージしています。このイメージでパターンマッチを沢山書けばきっとマスターできると思います。