座未完成

时间:2011-02-20 08:07:14

标签: f#

编译此代码片段:

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

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

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

这条消息是什么意思?在C#/ C ++中,我希望在这种情况下出现“未使用的变量”警告,但F#会给出不同的结果。

1 个答案:

答案 0 :(得分:16)

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

printfn语句有一个返回值,这最终会绑定到test

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

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

结束你的功能