Domanda

È possibile passare un riferimento a una funzione a un'altra funzione in F#?Nello specifico, mi piacerebbe passare funzioni lambda come

foo(divertimento x -> x**3)

Più specificamente, ho bisogno di sapere come mi riferirei alla funzione passata in una funzione che ho scritto io stesso.

È stato utile?

Soluzione

Sì, è possibile.IL Manuale ha questo esempio:

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

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

Altri suggerimenti

Le funzioni sono cittadini di prima classe in F#.Puoi quindi farli circolare come preferisci.

Se hai una funzione come questa:

let myFunction f =
    f 1 2 3

E F è la funzione quindi il valore restituito di miaFunzione È F applicato a 1,2 e 3.

Passare una funzione lambda a un'altra funzione funziona in questo modo:

Supponiamo di avere una nostra funzione banale come segue:

let functionThatTakesaFunctionAndAList f l = List.map f l

Ora puoi passarle una funzione lambda e un elenco:

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

All'interno della nostra stessa funzione functionThatTakesaFunctionAndAList puoi semplicemente fare riferimento alla funzione lambda come f perché hai chiamato il tuo primo parametro f.

Il risultato della chiamata di funzione è ovviamente:

float list = [1.0; 8.0; 27.0]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top