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 corresponde exactamente a uno de los casos con nombre. Este tipo de dato se conoce como tipo suma.

Cada caso de una unión discriminada puede tener datos asociados de forma opcional, y distintos casos pueden tener distintos tipos de datos. Si ninguno de los casos tiene datos asociados, la unión discriminada se parece 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 las hace fáciles de usar, y las encontrarás en muchos lugares, 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

Para crear un valor para un caso específico, puedes referirte a su nombre, o a su nombre completo si el nombre no es único. Como los nombres de los casos son solo funciones constructoras, los datos asociados se pueden pasar como un argumento normal de función.

let byName = Integer 2
let byFullName = Number.Invalid

Las uniones discriminadas tienen igualdad estructural, lo que significa que dos valores del 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 ventana o pestaña nueva

Aprende Uniones discriminadas

La práctica está bloqueada

Desbloquea 10 ejercicios más para practicar Uniones discriminadas