F# Modelli attivi semplici


Esempio

I pattern attivi sono un tipo speciale di pattern matching in cui è possibile specificare le categorie denominate in cui i dati potrebbero cadere e quindi utilizzare tali categorie nelle dichiarazioni match .

Per definire un modello attivo che classifica i numeri come positivi, negativi o pari a zero:

let (|Positive|Negative|Zero|) num = 
    if num > 0 then Positive 
    elif num < 0 then Negative
    else Zero

Questo può quindi essere utilizzato in un'espressione di corrispondenza del modello:

let Sign value = 
    match value with
    | Positive -> printf "%d is positive" value
    | Negative -> printf "%d is negative" value
    | Zero -> printf "The value is zero"

Sign -19 // -19 is negative
Sign 2 // 2 is positive
Sign 0 // The value is zero