Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione funzionale / Funzioni di ordine superiore
Passare subroutine
Per accettare una subroutine come parametro, dichiarala con il
sigillo &. Dentro il corpo puoi poi chiamarla per
nome:
sub apply(&f, $x) {
f($x);
}
say apply(* + 3, 10); # 13Il parametro &f riceve un pezzo di codice, e
f($x) lo chiama. Qui abbiamo passato * + 3,
un’espressione Whatever che significa «aggiungi tre a qualunque
cosa ti venga data», quindi apply(* + 3, 10) calcola
13.
Puoi passare altrettanto facilmente una subroutine con nome,
riferendoti a essa con il sigillo & così che venga
passata invece di essere chiamata:
sub double($n) { $n * 2 }
sub apply(&f, $x) {
f($x);
}
say apply(&double, 5); # 10È esattamente così che funzionano map e
grep: sono subroutine che prendono un’altra subroutine — il
tuo blocco — e la applicano a ogni elemento. Scrivere subroutine tue che
prendono codice le rende altrettanto flessibili.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Funzioni di ordine superiore | Quiz — Passare subroutine →
💪 Oppure vai direttamente agli esercizi di questa
sezione.