座未完成

Ale*_*x F 14 f#

编译此代码片段:

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

如果删除了最后一行,则会出现以下编译错误:

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

这条消息是什么意思?在C#/ C++中,我希望在这种情况下"未使用的变量"警告,但F#给出了不同的东西.

Jim*_*mmy 16

在F#中,函数必须将名称绑定到值.

printfn语句具有返回值,这最终将被绑定test.

如果没有该printfn语句,您只有一个将值1绑定到的语句x.编译器将期待一些必须测试的东西.因为测试函数此时停止,所以这就是您看到编译器错误的原因.

如果你希望你的功能只是为了做东西(可能有副作用),你应该结束你的功能 ()