Queste cose sono una specie di scorciatoie l'una con l'altra.
La cosa fondamentale è let
. Questa parola chiave dà un nome alle cose:
let name = "stuff"
parlando più tecnicamente, la parola chiave let
definisce un identificatore e lo associa a un valore:
let identifier = "value"
Dopo questo, è possibile utilizzare le parole name
e identifier
nella vostra programma, e il compilatore saprà cosa significano.Senza lo let
, non ci sarebbe un modo per nominare le cose, e dovresti sempre scrivere tutte le tue cose in linea, invece di riferirti a pezzi di esso per nome.
Ora, i valori sono disponibili in diversi gusti. Ci sono stringhe "some string"
, ci sono numeri interi 42
, numeri in virgola mobile 5.3
, valori booleani true
e così via. Su un tipo speciale di valore è la funzione . Le funzioni sono anche valori, per molti aspetti simili a stringhe e numeri. Ma come si scrive una funzione? Per scrivere una stringa, si usano le virgolette doppie, ma per quanto riguarda la funzione?
Beh, di scrivere una funzione, si utilizza la parola speciale fun
:
let squareFn = fun x -> x*x
Qui, ho usato la parola chiave let
per definire un identificatore squareFn
, e si legano che identificativo per un valore del tipo di funzione. Ora posso usare la parola squareFn
nel mio programma, e il compilatore saprà che ogni volta che lo uso intendo una funzione fun x -> x*x
.
Questa sintassi è tecnicamente sufficiente, ma non sempre comoda per scrivere. Quindi, al fine di renderlo più breve, il let
legame assume una responsabilità in più su se stesso e fornisce un modo più breve di scrivere quanto sopra:
let squareFn x = x*x
Questo dovrebbe farlo per let
vs fun
.
Ora, la parola chiave function
è solo una forma breve per fun
+ match
. Scrivere function
equivale a scrivere fun x -> match x with
, punto.
Ad esempio, i seguenti tre definizioni sono equivalenti:
let f = fun x ->
match x with
| 0 -> "Zero"
| _ -> "Not zero"
let f x = // Using the extra convenient form of "let", as discussed above
match x with
| 0 -> "Zero"
| _ -> "Not zero"
let f = function // Using "function" instead of "fun" + "match"
| 0 -> "Zero"
| _ -> "Not zero"
Sarebbe un po 'più facile visualizzare alternative se anche voi ci dite che cosa' V e 'A' sono. –
"function" è un tipo di "corrispondenza" che viene utilizzata nelle espressioni della pipeline. per esempio. x |> funzione | caso1 -> ... | case2 -> ... È un bello stile. – sgtz