F#构造函数语法

时间:2011-01-07 13:43:20

标签: f#

当使用.net类时,有些情况下我们不需要括号来传递像

这样的单个参数
let foo = DirectoryInfo "boo"

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

1 个答案:

答案 0 :(得分: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

有关此款式的更多信息,请查看Tuples on MSDN

现在,还有另一种稍微不同的方法,使它看起来像一个函数需要多于1个参数。这称为currying,在处理F#代码时,您会更频繁地看到它。这是quick example