Блок незакончен - PullRequest
       2

Блок незакончен

14 голосов
/ 20 февраля 2011

Этот фрагмент кода скомпилирован:

let test =
    let x = 1
    printfn "%A" x

Если удалена последняя строка, возникает следующая ошибка компиляции:

error FS0588: Block following this 'let' is unfinished. Expect an expression.

Что означает это сообщение?В C # / C ++ я ожидал бы предупреждение «Неиспользуемая переменная» в такой ситуации, но F # дает что-то другое.

1 Ответ

16 голосов
/ 20 февраля 2011

В F # функция должна привязать имя к значению.

Оператор printfn имеет возвращаемое значение, и это в конечном итоге то, что связывается с test.

Без оператора printfn у вас есть только оператор, связывающий значение от 1 до x.Компилятор будет ожидать что-то связанное с тестированием.Поскольку тестовая функция останавливается в этой точке, именно поэтому вы видите ошибку компилятора.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...