トラック
/
F#
F#
/
シラバス
/
判別共用体
判別

判別共用体 の F#

15個の演習

判別共用体について

判別共用体型は、名前の付いた固定数のケースを表します。判別共用体の各値は、名前の付いたケースのうち必ず1つに対応します。この種のデータ型は、直和型 として知られています。

判別共用体の各ケースには、任意でデータを関連付けることができ、ケースごとに異なる型のデータを持たせられます。どのケースにもデータが関連付けられていない場合、判別共用体は、他の言語で一般に 列挙型(または enum)と呼ばれるものに似ています。

判別共用体は typeキーワードを使って定義し、必要な構文はごくわずかです。そのため簡単に使うことができ、基本ライブラリをはじめ、さまざまな場所で使われています。

// Discriminated union without associated data
type Season =
    | Spring
    | Summer
    | Autumn
    | Winter

// Discriminated union with associated data
type Number =
    | Integer of int
    | Float of float
    | Invalid

特定のケースの値を作るには、そのケース名を参照します。名前が一意でない場合は、完全な名前を使います。ケース名は単なるコンストラクター関数なので、関連付けたデータは通常の関数の引数として渡すことができます。

let byName = Integer 2
let byFullName = Number.Invalid

判別共用体は 構造的等価性 を持ちます。つまり、同じケースで同じ(任意の)データを持つ2つの値は等価です。

判別共用体を扱うのに好ましい方法は、識別子パターンを使ったパターンマッチングです。

let describe number =
    match number with
    | Integer i -> sprintf "Integer: %d" i
    | Float d  -> sprintf "Float: %f" d
    | Invalid   -> "Invalid"
GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

判別共用体を学習する

練習はロックされています

判別共用体を練習するには、あと10個の演習のロックを解除してください