Эти вещи являются яркими ярлыками друг к другу.
Самая фундаментальная вещь let
. Это ключевое слово дает имена материал:
let name = "stuff"
Говоря более технически, let
ключевого слова определяет идентификатор и связывает его со значением:
let identifier = "value"
После этого, вы можете использовать слова name
и identifier
в вашем и компилятор будет знать, что они означают.Без let
не было бы способа назвать материал, и вы должны были бы всегда писать все свои данные в строке, вместо того, чтобы ссылаться на куски его по имени.
Теперь значения имеют разные ароматы. Есть строки "some string"
, есть целые числа 42
, числа с плавающей запятой 5.3
, логические значения true
и т. Д. По специальному виду - функция. Функции также являются значениями, во многом похожими на строки и числа. Но как вы пишете функцию? Чтобы написать строку, вы используете двойные кавычки, но как насчет функции?
Ну, чтобы написать функцию, можно использовать специальное слово fun
:
let squareFn = fun x -> x*x
Здесь я использовал let
ключевое слово, чтобы определить идентификатор squareFn
и привязать этот идентификатор к значению функции вида. Теперь я могу использовать слово squareFn
в своей программе, и компилятор узнает, что всякий раз, когда я его использую, я имею в виду функцию fun x -> x*x
.
Этот синтаксис является технически достаточным, но не всегда удобным для записи. Поэтому для того, чтобы сделать его короче, let
связывание имеет дополнительную ответственность на себя и обеспечивает более короткий путь, чтобы написать выше:
let squareFn x = x*x
Это должно сделать это для let
против fun
.
Ключевое слово function
- это короткая форма для fun
+ match
. Письмо function
эквивалентно написанию fun x -> match x with
, период.
Например, следующие три определения эквивалентны:
let f = fun x ->
match x with
| 0 -> "Zero"
| _ -> "Not zero"
let f x = // Using the extra convenient form of "let", as discussed above
match x with
| 0 -> "Zero"
| _ -> "Not zero"
let f = function // Using "function" instead of "fun" + "match"
| 0 -> "Zero"
| _ -> "Not zero"
Было бы немного проще, чтобы показать вам альтернативы, если вы сообщите нам, что '' V' и A' есть. –
«Функция» - это своего рода «совпадение», которое приходит в себя в выражениях конвейера. например x |> функция | case1 -> ... | case2 -> ... Это приятный стиль. – sgtz