Pregunta

Estoy aprendiendo F#.Empecé mirando por encima de la F# muestras desde Microsoft.

Corrí a través de esta declaración:

let line1,line2 = 
    use sr = System.IO.File.OpenText @"test.txt"
    let line1 = sr.ReadLine() 
    let line2 = sr.ReadLine() 
    (line1,line2)

¿Alguien puede explicar esta declaración para mí?

¿Qué tipo se define aquí?Una función?Una tupla?

¿Por qué line1 y line2 tiene que ser redefinido dentro de la definición de line1,line2 (let line1 = ... let line2 =)?

¿Qué pasa con el final de la línea, (line1, line2) y ¿cómo esta eliminatoria en el tipo de la definición original?Es esta la función de devolución?

Es "instrucción" incluso la palabra correcta para una definición en F#?

Gracias.

¿Fue útil?

Solución

La forma general para valores de identificador de unión en F # es

let pattern = expression

En este caso, el patrón es "línea 1, línea 2", que es un tupla patrón, que se esperan para unirse a una 2-tupla de valores y asignar los nombres "LINE1" y "line2" a esos dos valores.

Los expresión es el siguiente 4 líneas. Dentro de esa expresión hay variables locales. Ellos resultan ser llamado también "línea 1" y "línea 2", pero que fácilmente se podrían haber cambiado el nombre de "x" y "y" o lo que sea - el alcance de estos identificadores es local a esta expresión sangría. (El hecho de que los mismos nombres se utilizan como los nombres en el ámbito exterior no tiene ningún efecto en lo que se refiere a la compilador.)

La línea final si la expresión es el 'valor de retorno' de la expresión. En este caso se devuelve el 2-tupla de valores "línea 1" y "línea 2" (o "x" e "y" si se les cambie el nombre para la claridad de la exposición). Dicho sea de paso, ya que estos dos valores tienen cada tipo "string", el tipo de la expresión de retorno es "string * cadena", que es una 2-tupla donde cada valor es una cadena. Esto significa que los "línea 1" originales "y" línea 2 nombres en la primera línea de cada uno será deducido de tener tipo "cadena".

F # es funcional, y por lo tanto en un sentido "todo es una expresión" y "no hay declaraciones" (sólo las secuencias de expresiones que se evalúan de forma secuencial), pero está bien OMI a (ab) uso del término "declaración "para describir el interior 'vamos' líneas, a menos que usted está tratando de ser muy preciso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top