开发者

F# constructor syntax

开发者 https://www.devze.com 2023-02-03 14:01 出处:网络
when using .net classes, there are cases when we don\'t need parenthesis to pass a single parameter like

when using .net classes, there are cases when we don't need parenthesis to pass a single parameter like

let foo = DirectoryInfo "boo"

but something a little more complicate开发者_高级运维d using a single parameter, we do need parenthesis... does anyone know the parsing rules when this is true?


In F#, all functions take a single parameter. Now this may be a little confusing at first, because you can have a function which appears to take more than one parameter, but you're actually passing a single parameter that is a tuple.

Here's a simple example of constructors that appear like they take more than 1 parameter:

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

For more info about this style, check out Tuples on MSDN.

Now, there also is another slightly different method of making it seem like a function takes more than 1 argument. This is called currying, which you will see more often when dealing only with F# code. Here's a quick example of this.

0

精彩评论

暂无评论...
验证码 换一张
取 消