Tracks
/
F#
F#
/
Temario
/
Uniones discriminadas
Un

Uniones discriminadas en F#

15 ejercicios

Acerca de Uniones discriminadas

El tipo unión discriminada representa un número fijo de casos con nombre. Cada valor de una unión discriminada se corresponde con exactamente uno de los casos con nombre. Este tipo de dato se conoce como tipo suma.

Cada caso de una unión discriminada puede tener opcionalmente datos asociados, y diferentes casos pueden tener diferentes tipos de datos. Si ninguno de los casos tiene datos asociados, la unión discriminada es similar a lo que otros lenguajes suelen llamar una enumeración (o enum).

Una unión discriminada se define con la palabra clave type y requiere muy poca sintaxis. Esto hace que sean fáciles de usar, y verás que se usan en muchos sitios, incluida la biblioteca 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

Crear un valor para un caso específico se puede hacer refiriéndose a su nombre, o a su nombre completo si el nombre no es único. Como los nombres de los casos son solo funciones de constructor, los datos asociados se pueden pasar como un argumento de función normal.

let byName = Integer 2
let byFullName = Number.Invalid

Las uniones discriminadas tienen igualdad estructural, lo que significa que dos valores para el mismo caso y con los mismos datos (opcionales) son equivalentes.

La forma preferida de trabajar con uniones discriminadas es mediante la coincidencia de patrones usando el patrón de identificador:

let describe number =
    match number with
    | Integer i -> sprintf "Integer: %d" i
    | Float d  -> sprintf "Float: %f" d
    | Invalid   -> "Invalid"
Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Uniones discriminadas

La práctica está bloqueada

Desbloquea 10 ejercicios más para practicar Uniones discriminadas