Ответ 1
В F # (и OCaml) let
- довольно мощная конструкция, которая используется для привязки значения, что означает назначение некоторого значения символу. Это может означать различные вещи:
Объявление локального или глобального значения - вы можете использовать его для объявления локальных значений. Это похоже на создание переменной в императивных языках, за исключением того, что значение переменной не может быть изменено позже (она неизменна):
let hello = "Hello world"
printfn "%s" hello
Объявление функции - вы также можете использовать ее для объявления функций. В этом случае вы указываете, что символ является функцией с некоторой arity:
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
просто делает код более читаемым.