前言:最近在了解F#,无意中看到一个日文的教程( http://techbank.jp/Community/blogs/gushwell/default.aspx ),觉得很不错,所以希望可以和大家一起分享、学习。

数据类型说了好几回了,有点烦了吧?这回我们就换个角度,学习下函数吧!
有两个两个输入参数并返回它们的和的简单函数如下:
let Add a b = a + b

这就是函数的定义。同样使用了声明变量时的let。

确实感觉很神奇,没有了C#语言那样的冗长。看了这个定义后,有点感觉C#是冗长的语言。调用函数的代码如下:
let c = Add 10 20
printfn "%d" c
其中,由于不使用括号有点怪怪的感觉。完整的程序如下:
#light
let Add a b = a + b
let c = Add 10 20
printfn "%d" c
对于这些代码,C#和VB.NET编程的人可能感到有些奇怪。有些无法理解什么是函数定义和函数调用。

上述代码如果用C#代码改写应该是这样的:
InBlock.gif static void Main( string[] args) {
InBlock.gif        Func< int, int, int> Add = (a, b) => a + b;
InBlock.gif        var c = Add(10, 20);
InBlock.gif        Console.WriteLine( "{0}",c);
InBlock.gif}
F#函数有点和C#的delegate相类似吧。不过可不能写成这样:
#light

let c = Add 10 20    // Error:Can not fine Add
printfn "%d" c
let Add a b = a + b
其中,由于无法找到Add声明,就会出现编译错误。