Lambda 表达式:fun 关键字 (F#)

fun 关键字用于定义 lambda 表达式(即匿名函数)。

语法

fun parameter-list -> expression

备注

parameter-list 通常包含名称和参数类型(可选)。 更一般地说,parameter-list 可以由任何 F# 模式组成。 有关可能模式的完整列表,请参阅模式匹配。 有效参数的列表包括以下示例。

// Lambda expressions with parameter lists.
fun a b c -> ...
fun (a: int) b c -> ...
fun (a : int) (b : string) (c:float) -> ...

// A lambda expression with a tuple pattern.
fun (a, b) -> …

// A lambda expression with a cons pattern.
// (note that this will generate an incomplete pattern match warning)
fun (head :: tail) -> …

// A lambda expression with a list pattern.
// (note that this will generate an incomplete pattern match warning)
fun [_; rest] -> …

表达式是函数的主体,是生成返回值的最后一个表达式。 有效 lambda 表达式的示例包括以下这些:

fun x -> x + 1
fun a b c -> printfn "%A %A %A" a b c
fun (a: int) (b: int) (c: int) -> a + b * c
fun x y -> let swap (a, b) = (b, a) in swap (x, y)

使用 Lambda 表达式

要对列表或其他集合执行操作,并且要避免定义函数的额外工作时,Lambda 表达式特别有用。 许多 F# 库函数将函数值作为参数使用,在这种情况下,使用 lambda 表达式可能会特别方便。 下面的代码将 lambda 表达式应用于列表的元素。 在此例中,匿名函数向列表中的每个元素加 1。

let list = List.map (fun i -> i + 1) [ 1; 2; 3 ]
printfn "%A" list

请参阅