かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

手軽なスクリプト言語としての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#の強力なパターンマッチに使うことも出来ます。至れり尽くせりです。

過去記事