Parcours
/
F#
F#
/
Programme
/
Unions discriminées
Un

Unions discriminées en F#

15 exercices

À propos de Unions discriminées

Le type d'union discriminée représente un nombre fixe de cas nommés. Chaque valeur d'une union discriminée correspond à exactement un des cas nommés. Ce type de données est appelé un type somme.

Chaque cas d'une union discriminée peut éventuellement avoir des données associées, et différents cas peuvent avoir différents types de données. Si aucun des cas n'a de données associées, l'union discriminée est semblable à ce que d'autres langages appellent généralement une énumération (ou enum).

Une union discriminée est définie à l'aide du mot-clé type et nécessite très peu de syntaxe. Cela les rend faciles à utiliser, et tu les trouveras utilisées à de nombreux endroits, y compris dans la bibliothèque de base.

// 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

On peut créer une valeur pour un cas spécifique en faisant référence à son nom, ou à son nom complet si le nom n'est pas unique. Comme les noms de cas ne sont que des fonctions de construction, les données associées peuvent être passées comme un argument de fonction classique.

let byName = Integer 2
let byFullName = Number.Invalid

Les unions discriminées ont une égalité structurelle, ce qui signifie que deux valeurs pour le même cas et avec les mêmes données (facultatives) sont équivalentes.

La façon privilégiée de travailler avec les unions discriminées est de passer par le filtrage par motif en utilisant le motif d'identificateur :

let describe number =
    match number with
    | Integer i -> sprintf "Integer: %d" i
    | Float d  -> sprintf "Float: %f" d
    | Invalid   -> "Invalid"
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Unions discriminées

L'entraînement est verrouillé

Déverrouille 10 exercices de plus pour t'entraîner sur Unions discriminées