ワイルドカードパターンのメリット
今、暇な時間に少しずつ、F# for Scientistsを読んでいて
その中で、なるほど、思った部分があったので紹介してみる。
F#では任意のパターンにマッチするワイルドカードパターンというものがあるが、ワイルドカードを使わずにパターン部に変数をおいた場合にも、任意のパターンにマッチする動作をする。
具体的には次の例の通り。
これらはかけ算を行う関数の定義で、どちらも同じ動作をします。
//ワイルドカードパターン不使用 let product a b = match a,b with | a,0 -> 0 | 0,b -> 0 | a,b -> a*b;;
//ワイルドカードパターン使用 let product2 a b = match a,b with | _,0 -> 0 | 0,_ -> 0 | a,b -> a*b;;
しかし、下の例のワイルドカードパターンを用いたバージョンのほうが実際は良くて、ワイルドカードパターンを用いた場合、
○パターンマッチした値は使用されない
という点が明確になるとのこと。
また、場合は限られるが、このケースではワイルドカードパターンを用いた場合は、最初2つのパターンマッチをORパターンでかけるという点も有利です。
ほんとにちょっとしたことだけれども、コーディングスタイルの一例としていかがでしょうか。