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

这回我们要学习的是Lambda表达式。F#和C#一样也有匿名函数。不过感觉将匿名函数称为Lambda更好些。
试着写些代码吧:
let add = fun x y -> x + y
printfn "%A" (add 1 3)
这里我们定义了add函数。这个定义使用了匿名函数(取出x,y两个参数,并将x+y的结果返回)。fun就是匿名函数的关键字。
之前有过的函数定义是:
let add x y = x + y
这是一种省略形式。不同的只是参数是否在lambda表达式中。
从C#的经验来看可以将函数作为其他函数的参数传入的。
let add = fun x y -> x + y
let hoge func =
    let a = func 1 10
    printfn "%A" a
hoge add  // 将add作为参数传入hoge函数中
确实可以的啊,显示结果是11。
当然,还可以试着将lambda表达式直接传入到之前的函数中。
let hoge func =
    let a = func 1 10
    printfn "%A" a
hoge (fun x y -> x + y)  // 直接传入lambda表达式
 
C#3.0中就普遍使用了lambda表达式,这也使得在F#使用lambda就不会有太多陌生感。