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
(|Light|Fair|Heavy|)define tres desenlaces con nombre.- El clasificador corre cuando el match lo consulta.
- Quien llama lee política: Light alimenta, Heavy invierna.
Palabras clave y builtins usados aquí
elifelseifletmatchthenwith
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.
Paso 3 de 3 en Coincidencia de patrones; paso 9 de 27 en Fundamentos del lenguaje.