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