in
è una sbornia da s 'F # radici OCaml e specifica legati variabili, che sono leggermente diverse da variabili scopi.
Si pensi al legame variabile come segue; Hai un'espressione:
first + " " + second
Allo stato attuale first
e second
sono non legato - non hanno alcun valore fisso - in modo che l'espressione non ha alcun valore concreto al momento. Utilizzando la sintassi
let (...) in
si specifica come tali variabili sono vincolati in quell'espressione, così il vostro esempio useranno la sostituzione di variabile per ridurre tale funzione fino al
let doStuff x =
x + " " + x
In questo esempio entrambe le forme sono identiche, ma immagina quanto segue:
let (x = 2 and y = x + 2) in
y + x
questo non funzionerà lo stesso
let (x = 2 and y = x + 2)
y + x
Perché nel primo caso x
è destinato solo dopo la parola chiave in
.
Nel caso successivo, la variabile normale scopeing ha effetto, quindi le variabili vengono associate non appena vengono dichiarate.
Spero che chiarisca le cose. In generale, si dovrebbe sempre utilizzare la versione senzain
e specificare #light
all'inizio del tuo F # source file
fonte
2009-02-13 15:19:33
Non credo che il codice in questione è equivalente a 'far doStuff x = x +" "+ x'. Credo che sia equivalente a 'let doStuff x = (fst x) +" "+ (snd x)'. Ho sbagliato qui? – Soldalma