Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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 .