Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione funzionale / Lambda e chiusure
Lambda
Una lambda è una funzione senza nome. Hai già incontrato due
modi di scriverne una. Il primo è il blocco con la
freccia, che elenca i propri parametri dopo la freccia
->:
my &square = -> $x { $x * $x };
say square(7); # 49Il secondo è la forma Whatever, dove un
* sta al posto dell’argomento e l’espressione attorno
diventa una funzione a un argomento:
my &square = * ** 2;
say square(7); # 49Entrambi creano lo stesso genere di cosa: un pezzo di codice che puoi conservare, passare e chiamare. Le lambda brillano come argomenti delle funzioni di ordine superiore, dove dar loro un nome sarebbe solo d’intralcio:
say (1..5).map(-> $n { $n * $n }); # (1 4 9 16 25)
say (1..5).map(* ** 2); # (1 4 9 16 25)La forma con la freccia è più chiara quando il corpo è più lungo o prende parecchi parametri; la forma Whatever è splendidamente breve per le espressioni semplici. Sono due grafie della stessa idea: una funzione senza nome.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Lambda e chiusure | Quiz — Lambda →
💪 Oppure vai direttamente agli esercizi di questa
sezione.