En F # (y OCaml) let
es una construcción bastante poderosa que se utiliza para el enlace de valores , lo que significa asignar algún significado a un símbolo. Esto puede significar varias cosas:
Declarando el valor local o global - puede usarlo para declarar valores locales. Esto es similar a la creación de una variable en los lenguajes imperativos, con la excepción de que el valor de la variable no se puede cambiar más tarde (es inmutable):
let hello = "Hello world"
printfn "%s" hello
función Declarar - también se puede usar para declarar funciones . En este caso se especifica que un símbolo es una función con un poco de aridad:
let add a b = a + b
printfn "22 + 20 = %d" (add 22 20)
¿Por qué lo necesita? En F #, el código sería ambiguo sin él. Puede utilizar valor ocultar para crear nuevo símbolo que oculta el símbolo anterior (con el mismo nombre), por lo que por ejemplo los siguientes rendimientos: true
let test() =
let x = 10
let x = 20 // hides previous 'x'
x = 20 // compares 'x' with 20 and returns result
Si se omitiera la palabra clave let
, que no sabrían si está comparando valores o si está declarando un nuevo símbolo.Además, como han dicho otros, puede utilizar la sintaxis let <symbol> = <expression> in <expression>
(si se utiliza la línea de rotura en F #, entonces no es necesario in
) para escribir fijaciones de valor como parte de otra expresión:
let z = (let x = 3 + 3 in x * x)
Aquí, el valor de z
será 36. Aunque es posible que pueda inventar alguna sintaxis que no requiera la palabra clave let
, creo que usar let
simplemente hace que el código sea más legible.
Parece que 'let' se introduce solo porque' x = y' es ambiguo? Si '==' se usa para comparar, ¿el 'let' se vuelve innecesario? – kennytm
@KennyTM: En principio, definitivamente podrías inventar alguna sintaxis no ambigua, pero creo que 'let' es bastante legible. Además, en la sintaxis completa, el 'let' se combina con' in' (porque es una expresión, no hay enunciados en F #), por lo que necesitaría algo similar. –
Me estremezco cuando veo 'let' w/out' in' en F # ... Como programador de ocaml veo que el' en' es de gran ayuda en la legibilidad y el formateo. ¿Por qué los programadores F # no lo utilizan tanto? – nlucaroni