何时使用 `let ... in` 来绑定变量?

MiP*_*MiP 3 .net f# functional-programming

基于“F#中关键字“in”的含义”的回答

let (x = 2 and y = x + 2) in
    y + x
Run Code Online (Sandbox Code Playgroud)

这不会像

let (x = 2 and y = x + 2)
    y + x
Run Code Online (Sandbox Code Playgroud)

在前一种情况下x,只绑定在in关键字之后。在后一种情况下,正常的变量作用域规则生效,因此变量一经声明就被绑定。

当需要使用 , 指定绑定变量in而不是声明时绑定?

The*_*Fox 5

你可以像这样使用let/ in

let x = 2 in
    let y = x + 2 in
        y + x
Run Code Online (Sandbox Code Playgroud)

F# 是一种基于表达式的语言,这种形式的代码揭示了这一点。但是,内置了语法糖,因此您可以以扁平的方式编写相同的内容,看起来基于语句,但实际上并非如此:

let x = 2
let y = x + 2
y + x
Run Code Online (Sandbox Code Playgroud)

in如果你真的想保持在同一条线上,你可以使用let x = 2 in x + 2。然而,看到这一点很不寻常。在我使用过的数千行 F# 中,我自己从未见过或使用过它。