Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das fun Schlüsselwort wird verwendet, um einen Lambda-Ausdruck zu definieren, d. h. eine anonyme Funktion.
Syntax
fun parameter-list -> expression
Oder verwenden Sie die _.Property Kurzhandnotation:
_.
fun, Parameterliste und Lambdapfeil (->) werden weggelassen, und dies _. ist ein Teil des Ausdrucks , in dem _ das Parametersymbol ersetzt wird.
Die folgenden Codeausschnitte sind gleichwertig:
(fun x -> x.Property)
_.Property
Bemerkungen
Die Parameterliste besteht in der Regel aus Namen und optionalen Parametertypen. Im Allgemeinen kann die Parameterliste aus allen F#-Mustern bestehen. Eine vollständige Liste der möglichen Muster finden Sie unter Musterabgleich. Zu den Listen gültiger Parameter gehören die folgenden Beispiele.
// 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] -> …
Der Ausdruck ist der Textkörper der Funktion, der letzte Ausdruck, von dem ein Rückgabewert generiert wird. Beispiele für gültige Lambda-Ausdrücke sind:
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)
Verwenden von Lambdaausdrücken
Lambda-Ausdrücke sind besonders nützlich, wenn Sie Vorgänge in einer Liste oder einer anderen Auflistung ausführen möchten und die zusätzliche Arbeit beim Definieren einer Funktion vermeiden möchten. Viele F#-Bibliotheksfunktionen verwenden Funktionswerte als Argumente, und es kann besonders praktisch sein, einen Lambda-Ausdruck in diesen Fällen zu verwenden. Der folgende Code wendet einen Lambda-Ausdruck auf Elemente einer Liste an. In diesem Fall überprüft die anonyme Funktion, ob ein Element Text ist, der mit angegebenen Zeichen endet.
let fullNotation = [ "a"; "ab"; "abc" ] |> List.find ( fun text -> text.EndsWith("c") )
printfn "%A" fullNotation // Output: "abc"
let shorthandNotation = [ "a"; "ab"; "abc" ] |> List.find ( _.EndsWith("b") )
printfn "%A" shorthandNotation // Output: "ab"
Der vorherige Codeausschnitt zeigt beide Notationen: Verwenden des fun Schlüsselworts und der Kurzschreibnotation _.Property .