При рассмотрении F# Ocaml и других функциональных примеров кода языка я замечаю, что ключевое слово, которому позволяют, используется очень часто.
В F # (и OCaml) let
- довольно мощная конструкция, которая используется для привязки значений , что означает придание некоторого значения символу. Это может означать разные вещи:
Объявление локального или глобального значения - вы можете использовать его для объявления локальных значений. Это похоже на создание переменной в императивных языках, за исключением того, что значение переменной не может быть изменено позже (оно неизменяемо):
let hello = "Hello world"
printfn "%s" hello
Объявление функции - вы также можете использовать его для объявления функций. В этом случае вы указываете, что символ - это функция с некоторой арностью:
let add a b = a + b
printfn "22 + 20 = %d" (add 22 20)
Зачем он вам? В F # код без него был бы неоднозначным. Вы можете использовать value hiding для создания нового символа, который скрывает предыдущий символ (с тем же именем), поэтому, например, следующее возвращает true
:
let test () =
let x = 10
let x = 20 // hides previous 'x'
x = 20 // compares 'x' with 20 and returns result
Если вы пропустили let
, вы не узнаете, сравниваете ли вы значения или объявляете новый символ.Кроме того, как отмечали другие, вы можете использовать синтаксис let
(если вы используете перенос строки в F #, тогда вам не нужно в
), чтобы записать привязки значений как часть другого выражения:
let z = (let x = 3 + 3 in x * x)
Здесь значение z
будет 36. Хотя вы можете изобрести некоторый синтаксис, который не требует ] let
, я думаю, что использование let
просто делает код более читабельным.
Основная цель let - установить область видимости вокруг его определений.
let
Гарантирует, что определения не загрязняют пространство имен чем-либо, кроме
.
«let» вводит новую область видимости переменных и позволяет вам связывать переменные со значениями для этой области. Его часто читают как «пусть x будет [значением] в ...». Когда у вас нет присваивания, очень полезно избегать конфликта имен переменных.
let означает «привязать значение к имени» и, как правило, произносится, создает новую переменную.
x = 4
означает «присвоить 4 x», что не создает новое имя .
В Haskell,
foo = let x = 5
y = 7
in z=x+y
используется, чтобы прояснить, что x и y равны " частные "переменные в foo.
Если вы увлекаетесь обучением, эта лекция также может быть актуальной, особенно. Часть об оценке срока аренды.