Come funziona la dichiarazione della partita in F #?
Domanda
Sono impegnato ad affrontare il progetto anemico di F # fornito da MS in VS 2010 Beta 2, e mi sono imbattuto in qualcosa che ha bisogno di qualche spiegazione:
let rec SumList xs =
match xs with
| [] -> 0
| y::ys -> y + SumList ys
Suppongo che la corrispondenza sia qualcosa di simile a un interruttore in altre lingue, in cui un elenco vuoto genera un valore di ritorno 0, ma il secondo caso mi affascina. Questo dice al "runtime | interprete" di valutare l'argomento match come y cons ys , o piuttosto come 'se l'argomento ha la forma y cons ys ', ricorre con yy?
Soluzione
Puoi trovare la discussione qui
Spiegazione della corrispondenza del modello vs switch
utile. Penso che sia difficile riassumere come funziona il pattern matching, ma è sia un costrutto di controllo-flusso (a la switch) che un costrutto vincolante.
Altri suggerimenti
Un pattern matching non è come un'istruzione switch
: switch
opera sul valore di un'espressione, mentre match
può anche operare sul struttura dell'espressione.