В F # (и OCaml) let
является довольно мощной конструкцией, которая используется для привязки значения , что означает присвоение некоторого значения символу. Это может означать разные вещи:
Объявление локального или глобального значения - вы можете использовать его для объявления локальных значений. Это похоже на создание переменной в императивных языках, за исключением того, что значение переменной не может быть изменено позже (оно является неизменным):
let hello = "Hello world"
printfn "%s" hello
Объявление функции - вы также можете использовать ее для объявления функций. В этом случае вы указываете, что символ является функцией с некоторой арностью:
let add a b = a + b
printfn "22 + 20 = %d" (add 22 20)
Зачем вам это нужно? В F # код был бы неоднозначным без него. Вы можете использовать значение, скрывающее , чтобы создать новый символ, который скрывает предыдущий символ (с тем же именем), поэтому, например, следующее возвращает true
:
let test () =
let x = 10
let x = 20 // hides previous 'x'
x = 20 // compares 'x' with 20 and returns result
Если вы опустите ключевое слово let
, вы не узнаете, сравниваете ли вы значения или объявляете новый символ. Также, как отмечали другие, вы можете использовать синтаксис let <symbol> = <expression> in <expression>
(если вы используете разрыв строки в F #, тогда вам не нужно in
), чтобы записывать привязки значений как часть другого выражения:
let z = (let x = 3 + 3 in x * x)
Здесь значение z
будет 36. Хотя вы можете изобрести некоторый синтаксис, не требующий ключевого слова let
, я думаю, что использование let
просто делает код более читабельным.