Visual Studio - f# - 错误FS0588:阻止此'let'未完成.期待表达

tro*_*ana 4 f#

我有几次尝试实现不同的功能,你看到的标题是标题.我想知道是否有人能告诉我此错误消息的一般含义(和原因).正如我之前提到的,我已经多次遇到问题并设法解决它,但仍然没有得到确切的原因,所以我不会发布任何特定的代码.

先感谢您

Tom*_*cek 12

当您可能遇到此错误时,最常见的情况是您编写的let绑定后面没有计算结果的表达式.在F#中,一切都是一个返回一些结果的表达式,所以如果你写let a = 10它通常不是一个有效的表达式.要使其有效,您需要返回一些内容:

let foo () = 
  let a = 10
  () // return unit value (which doesn't represent any information)
Run Code Online (Sandbox Code Playgroud)

可以编写的唯一例外let a = 10是F#源文件的全局范围 - 例如,在模块声明内或F#脚本文件中.(这就是上述声明foo有效的原因).

在没有看到你的代码的情况下很难给出任何建议,但是你可能有一个let没有F#表达式的声明.

出于好奇,以下示例显示let可以在表达式中使用它(它必须返回一些有意义的结果):

let a = 40 + (let a = 1 
              a + a)
Run Code Online (Sandbox Code Playgroud)