かずきのBlog@hatena

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

手軽なスクリプト言語としてのF# その22「列挙型」

今回は列挙型です。特に多く語ることはないのであっさりといきます。C#とかでいうenumですね。宣言方法はいたってシンプルで以下のように記述します。

type 型名 =
| 値1 = intの値
| 値2 = intの値
| 値3 = intの値
...

早速使ってみます。

// 赤 緑 青の列挙型
type Color =
    | Red = 0
    | Green = 1
    | Blue = 2

// 列挙型を使う
let c = Color.Red

// 普通に印字
printfn "%A" c
// int型に変換
printfn "%d" <| int c
// intから列挙型に変換
printfn "%A" <| enum<Color> 2

// パターンマッチもできる
match c with
| Color.Red -> printfn "赤色がきたよ"
| Color.Green -> printfn "緑色がきたよ"
| Color.Blue -> printfn "青色がきたよ"
| _ -> printfn "ありえん"

実行結果は以下のようになります。

Red
0
Blue
赤色がきたよ

型名.値名で値を取得できて、intにキャストしたりintからenumにキャストしたりも出来ます。あとは、F#の強力なパターンマッチに使うことも出来ます。至れり尽くせりです。

過去記事