Frage

Ist es möglich, in F# einen Verweis auf eine Funktion an eine andere Funktion zu übergeben?Insbesondere möchte ich Lambda-Funktionen wie übergeben

foo(fun x -> x ** 3)

Genauer gesagt muss ich wissen, wie ich in einer Funktion, die ich selbst geschrieben habe, auf die übergebene Funktion verweisen würde.

War es hilfreich?

Lösung

Ja, es ist möglich.Der Handbuch hat dieses Beispiel:

> List.map (fun x -> x % 2 = 0) [1 .. 5];;

val it : bool list
= [false; true; false; true; false]

Andere Tipps

Funktionen sind erstklassige Bürger in F#.Sie können sie daher nach Belieben weitergeben.

Wenn Sie eine Funktion wie diese haben:

let myFunction f =
    f 1 2 3

Und F ist Funktion dann der Rückgabewert von meineFunktion Ist F angewendet auf 1,2 und 3.

Die Übergabe einer Lambda-Funktion an eine andere Funktion funktioniert folgendermaßen:

Angenommen, wir haben eine eigene triviale Funktion wie folgt:

let functionThatTakesaFunctionAndAList f l = List.map f l

Jetzt können Sie eine Lambda-Funktion und eine Liste daran übergeben:

functionThatTakesaFunctionAndAList (fun x -> x ** 3.0) [1.0;2.0;3.0]

Innerhalb unserer eigenen Funktion functionThatTakesaFunctionAndAList Sie können die Lambda-Funktion einfach als bezeichnen f weil Sie Ihren ersten Parameter aufgerufen haben f.

Das Ergebnis des Funktionsaufrufs ist natürlich:

float list = [1.0; 8.0; 27.0]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top