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

时间:2011-09-09 21:05:42

标签: f#

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

提前谢谢

1 个答案:

答案 0 :(得分:12)

当您遇到此错误时,最常见的情况是编写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)