Dela via


Lambda-uttryck: Det roliga nyckelordet (F#)

Nyckelordet fun används för att definiera ett lambda-uttryck, dvs. en anonym funktion.

Syntax

fun parameter-list -> expression

Kommentarer

Parameterlistan består vanligtvis av namn och, om du vill, typer av parametrar. Mer allmänt kan parameterlistan bestå av alla F#-mönster. En fullständig lista över möjliga mönster finns i Mönstermatchning. Listor med giltiga parametrar innehåller följande exempel.

// 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] -> …

Uttrycket är brödtexten i funktionen, vars sista uttryck genererar ett returvärde. Exempel på giltiga lambda-uttryck är följande:

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)

Använda Lambda-uttryck

Lambda-uttryck är särskilt användbara när du vill utföra åtgärder i en lista eller annan samling och vill undvika det extra arbetet med att definiera en funktion. Många F#-biblioteksfunktioner använder funktionsvärden som argument, och det kan vara särskilt praktiskt att använda ett lambda-uttryck i dessa fall. Följande kod tillämpar ett lambda-uttryck på element i en lista. I det här fallet lägger den anonyma funktionen till 1 i varje element i en lista.

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

Se även