当使用.net类时,有些情况下我们不需要括号来传递像
这样的单个参数let foo = DirectoryInfo "boo"
但使用单个参数稍微复杂一些,我们确实需要括号... 如果这是真的,有没有人知道解析规则?
答案 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。