かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

手軽なスクリプト言語としてのF# その2

前回で、さらっと手続型っぽい言語としてF#を使うための基本的な機能を流してみました。そして、書いた後に気付いたんですよ。まがりなりにも関数型言語のF#の最初の記事で関数の定義の仕方を書いてなかったことにorz
ということで関数やります!

関数の定義

関数の定義は簡単です。

let 関数名 引数 = 関数本体

非常にすっきりです。関数本体が複数行にわたる場合は

let 関数名 引数 =
  式1
 式2
 式3

のようになります。最後の式の評価結果が戻り値になるっぽいです。ということで早速関数を作ってみましょう。名前を渡すと「こんにちは 名前 さん」という文字列を返す関数を定義してみます。

// 関数greetの定義
let greet name = "こんにちは " + name + " さん"

// 関数greetを呼び出す
let greetMessage = greet "田中"
// 結果を表示
printfn "%s" greetMessage

実行結果は以下の通りです。

こんにちは 田中 さん
続行するには何かキーを押してください . . .

予定通りです。


ついでに複数行のケースも書いてみようと思います。

// 複数行の場合
let greet name =
    if name = "田中" then
        name + "さんはちょっと・・・!!"
    else
        name + "さんこんにちは!!"

// 実行して印字!
let tanakaMessage = greet "田中"
let kazukiMessage = greet "かずき"

printfn "%s %s" tanakaMessage kazukiMessage

ちょっと田中さんに対する扱いがひどい気がしますが実行してみましょう。

田中さんはちょっと・・・!! かずきさんこんにちは!!
続行するには何かキーを押してください . . .

いい感じです。以上、簡単ですが関数でした。