Visual studio - f # - Ошибка FS0588: блок после этого 'let' не завершен.Ожидайте выражения - PullRequest
4 голосов
/ 10 сентября 2011

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

Заранее спасибо

1 Ответ

12 голосов
/ 10 сентября 2011

Наиболее распространенный случай, когда вы можете получить эту ошибку, это когда вы пишете привязку let, за которой не следует выражение для вычисления результата.В F # все является выражением, которое возвращает некоторый результат, поэтому, если вы пишете let a = 10, оно обычно не является допустимым выражением.Чтобы сделать его действительным, вам нужно что-то вернуть:

let foo () = 
  let a = 10
  () // return unit value (which doesn't represent any information)

Единственное исключение, где вы можете написать просто let a = 10 - это глобальная область видимости исходного файла F # - например,внутри объявления модуля или в файле сценария F #.(Вот почему объявление foo выше действительно).

Трудно дать какой-либо совет, не видя ваш код, но у вас, вероятно, есть объявление let, за которым не следует выражение F #.

Из любопытства следующий пример показывает, что let действительно может использоваться внутри выражения (где оно должно возвращать какой-либо значимый результат):

let a = 40 + (let a = 1 
              a + a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...