2009-02-13 10 views
33

Estoy empezando a aprender F #. En varios ejemplos de F # codificación veo la palabra clave "en" se usa de la siguiente manera:Significado de la palabra clave "en" en F #

let doStuff x = 
    let first, second = x in 
    first + " " + second 

La función funciona con y sin el "en" a continuación, final de la segunda línea. ¿Qué hace "en" hacer?

Respuesta

30

in es una resaca de OCaml raíces F # 's y especifica con destino variables, que son sutilmente diferentes a variables ámbitos.

Piense en el enlace variable de la siguiente manera; Usted tiene una expresión:

first + " " + second 

Tal como está first y second son no unido - no tienen ningún valor fijo - de modo que la expresión no tiene ningún valor concreto en la actualidad. Mediante el uso de la sintaxis

let (...) in 

está especificando cómo estas variables están obligados en esa expresión, por lo que su ejemplo usarán la sustitución de variables para reducir esa función hasta

let doStuff x = 
    x + " " + x 

En este ejemplo ambas formas son idénticas, pero imagine lo siguiente:

let (x = 2 and y = x + 2) in 
    y + x 

Esto no va a funcionar lo mismo que

let (x = 2 and y = x + 2) 
    y + x 

Debido a que en el primer caso x sólo va unida despuésin la palabra clave.

En el último caso, la variable normal alcance las reglas surten efecto, por lo que las variables se envían tan pronto como se declaran.

Espero que aclare las cosas. En general, usted debe utilizar siempre la versión sin in y especificar #light en el inicio de su fuente # F archivos

+2

No creo que el código en la pregunta es equivalente a 'let hacerTarea x = x +" "+ x'. Creo que es equivalente a 'let doStuff x = (fst x) +" "+ (snd x)'. ¿Me equivoco aquí? – Soldalma

5

Para citar here.

Cuando la opción de sintaxis de luz es habilitada 'in' es opcional. El token después de '=' de una definición 'let' comienza un nuevo bloque, donde el pre-analizador inserta un token 'in' separando implícitamente entre cada enlace 'let' que comienza en en la misma columna que ese token .

Sin la sintaxis clara, la opción 'in' se requiere con mucha frecuencia. El 'en' es opcional cuando se utiliza la opción de sintaxis claro .

Supongo que está utilizando una sintaxis ligera.

+0

Sí, estoy usando luz. –

Cuestiones relacionadas