F#构造函数语法

Ale*_*lex 5 f#

当使用.net类时,有些情况下我们不需要括号来传递单个参数,例如

let foo = DirectoryInfo "boo"
Run Code Online (Sandbox Code Playgroud)

但是使用单个参数稍微复杂一些,我们确实需要括号...当这是真的时,是否有人知道解析规则?

wsa*_*lle 4

在 F# 中,所有函数都采用单个参数。现在,一开始可能会有点令人困惑,因为您可以拥有一个看似接受多个参数的函数,但实际上您传递的是一个元组参数。

下面是一个简单的构造函数示例,看起来它们带有多个参数:

let foo = DirectoryInfo "boo" //passing 1 argument
let foo2 = DirectoryInfo ("boo") //passing 1 argument that is a tuple
let foo3 = StringBuilder ("blah", 100) //passing 1 argument again
let foo4 = StringBuilder "blah" 100 //does not compile
Run Code Online (Sandbox Code Playgroud)

有关此样式的更多信息,请查看MSDN 上的元组

现在,还有另一种稍微不同的方法,可以使函数看起来像是需要多个参数。这称为柯里化 (currying),在仅处理 F# 代码时您会更频繁地看到这种情况。这是一个简单的例子