2011-01-01 12 views
12

Eventuali duplicati:
F# explicit match vs function syntaxQuando utilizzare 'function' anziché 'fun'?

Ciao,

Sto imparando F # e sono confuso da 'divertimento' e le parole chiave 'funzionali'. La mia comprensione è che questi sono in qualche modo la stessa cosa.

// Use 'fun' 
let testFunction1 = fun argument -> match argument with 
            | Some(x) -> x 
            | None -> 0 

// Use 'function' 
let testFunction2 = function 
        | Some(x) -> x 
        | None -> 0 

è 'funzione' solo una scorciatoia per "divertimento x -> x incontro con"? C'è qualche differenza di runtime/ottimizzazione tra i due? Perché preferirei usare l'uno sull'altro?

Così com'è, 'funzione' sembra proprio per rendere il codice più difficile da leggere. Mi sto perdendo qualcosa?

+6

Se sembra divertente, non utilizzare la funzione; uccide il divertimento – Mehrdad

+0

Duplicato http://stackoverflow.com/questions/1839016/f-explicit-match-vs-function-syntax – Dykam

+0

Ci scusiamo per la domanda dupe! Non ho visto l'altro. –

risposta

1

È semplicemente zucchero sintattico. Proprio come in C# c => c = 'A' è lo zucchero di sintassi per delegate (char c) { return c = 'A'; }. Tutto dipende davvero dalle preferenze personali.

9

funzione consente solo un argomento ma permette l'adattamento del modello, mentre divertimento è il modo più generale e flessibile per definire una funzione. Date un'occhiata qui: http://caml.inria.fr/pub/docs/manual-ocaml/expr.html

+3

D'altra parte, puoi avere più clausole separate da '| quando usi' function'. La funzione –

+0

consente la corrispondenza del modello, ma solo sull'ultimo argomento * – symbiont

Problemi correlati