typestar

Patrones activos en F#

Nombra una clasificación una vez; matchea como si fuera nativa.

// An active pattern names a classification and matches on it.
let (|Light|Fair|Heavy|) weightKg =
    if weightKg < 22.0 then Light
    elif weightKg < 30.0 then Fair
    else Heavy

let plan hive weightKg =
    match weightKg with
    | Light -> sprintf "%s: feed heavily before frost" hive
    | Fair -> sprintf "%s: one more syrup round" hive
    | Heavy -> sprintf "%s: ready for winter" hive

plan "Willow" 34.2 |> printfn "%s"
plan "Bramble" 19.5 |> printfn "%s"
plan "Clover" 26.0 |> printfn "%s"

Cómo funciona

  1. (|Light|Fair|Heavy|) define tres desenlaces con nombre.
  2. El clasificador corre cuando el match lo consulta.
  3. Quien llama lee política: Light alimenta, Heavy invierna.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
476
Tokens
102
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 94 segundos.

Escribe este fragmento

Paso 3 de 3 en Coincidencia de patrones; paso 9 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →