Подтвердить что ты не робот

Значение ключевого слова "in" в F #

Я только начинаю изучать F #. В нескольких примерах кодирования F # я вижу ключевое слово "in", используемое следующим образом:

let doStuff x =
    let first, second = x in
    first + " " + second

Функция работает с и без "входа" в конце второй строки. Что делает "в"?

4b9b3361

Ответ 1

in является похмелье из корней F # OCaml и задает связанные переменные, которые являются тонко отличными от переменных областей.

Подумайте об изменении переменной следующим образом; У вас есть выражение:

first + " " + second

Поскольку он first и second несвязаны - у них нет фиксированных значений, поэтому в настоящее время выражение не имеет конкретного значения. Используя

let (...) in

вы указываете, как эти переменные привязаны в этом выражении, поэтому ваш пример будет использовать замену переменных, чтобы уменьшить эту функцию до

let doStuff x =
  x + " " + x

В этом примере обе формы идентичны, но представьте себе следующее:

let (x = 2 and y = x + 2) in
     y + x

Это не будет работать так же, как

let (x = 2 and y = x + 2)
     y + x

Потому что в первом случае x привязан только после к in.

В более позднем случае правила нормального изменения переменных вступают в силу, поэтому переменные привязаны, как только они объявлены.

Надеюсь, что это прояснит ситуацию. В общем, вы всегда должны использовать версию без in и указывать #light в начале ваших исходных файлов F #

Ответ 2

Процитировать здесь.

Когда опция синтаксиса света enabled 'in' не является обязательным. Токен после символа '=' определения 'let' начинает новый блок, где pre-parser вставляет неявное разделение 'in' токен между каждой привязкой "let", которая начинается с тот же столбец, что и этот токен.

Без опции синтаксиса подсветки 'in' очень часто требуется. "В" необязательно, когда опция синтаксиса используется.

Итак, я предполагаю, что вы используете легкий синтаксис.