Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione funzionale / Funzioni di ordine superiore
Restituire subroutine
Una subroutine può anche restituire una subroutine. Questo ti permette di costruire nuove funzioni al volo, su misura per gli argomenti che dai:
sub adder($n) {
sub ($x) { $x + $n };
}
my &add5 = adder(5);
say add5(3); # 8adder(5) costruisce e restituisce una subroutine anonima
che aggiunge 5 al proprio argomento. La conserviamo in
&add5 e la chiamiamo come qualunque altra subroutine.
Chiamare adder(10) darebbe un sommatore diverso che
aggiunge dieci.
Nota che la subroutine restituita ricorda il valore di
$n dalla chiamata che l’ha creata: add5
conserva il suo 5 anche dopo che adder è
terminata. Una subroutine che cattura valori dall’ambito in cui è stata
creata si chiama chiusura,
l’argomento della sezione successiva.
Restituire funzioni è un modo compatto di produrre famiglie di
operazioni imparentate senza ripetersi: un’unica definizione di
adder genera un numero illimitato di sommatori
specifici.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Quiz — Passare subroutine | Quiz — Funzioni di ordine superiore →
💪 Oppure vai direttamente agli esercizi di questa
sezione.