F#文法リファレンス - if式
ある条件により実行する処理を変えたいときはif式(if then式ともいう)を使用します。
使用に適した状況
現在の状況により返す値を決定したい場合や、状況により実行する処理を変えたい場合に使用します。ただし、基本的な使用法は「適切な値を返す」ことです。最後に値を返すように意識して使用しましょう。
サンプル
(*----------------------------------------------
if式
----------------------------------------------*)
//if式を使用する関数を定義
let selection x =
if ( x > 0 ) then "0以上"
elif ( x < 0 ) then "0未満"
else "0"
//if式を試す
selection 10 |> printfn "数値は%s"
selection -10 |> printfn "数値は%s"
selection 0 |> printfn "数値は%s"
文法
「if」キーワード、真偽を返す条件式、「then」キーワード、返す値もしくは条件が真のとき実行する処理を書きます。条件が偽のとき返す値、もしくは実行する処理、「else」キーワードと一連のコードを書きます。なお、複数の条件が考えられるときは、「elif」キーワード、「then」キーワード、返す値もしくは実行する処理を任意の数だけ書きます。
解説
If式を使用すると、条件を判定して、真偽の結果に従って値を返すことができます。また、コンソール画面にメッセージを出力するなどの特定の処理をすることもできます。ただし、If式本来の使い方は、条件を判定して「適切な値を返す」ことです。一応、printfnのような値を返さない処理を記述することはできますが、それはあくまでも例外的な使用法であり、極力値を返すように意識するべきです。関数プログラミングの基本は、関数屋敷を使って値をやり取りすることであり、副作用を伴う(値を返さない)プログラムは例外です。
他言語の経験者が引っかかりやすいのは、F#の場合if文ではなくif式だという部分です。式と文の違いは、値を返すところです。If式は必ず値を返さなければなりません。もし体を返さない場合は、返す値がないことを表わす特別な値「unit」を返します。なお、printfnなどの値を返さない命令文は、unitを返すようになっています。