Skip to main content

Higher Order Function in Swift

In informatica una Higher Order Function è una funzione che presenta almeno una delle seguenti 2 caratteristiche:

  1. riceve almeno una funzione come parametro
  2. ritorna una funzione come risultato

Si tratta di un concetto fondamentale della Functional Programming che elegge le funzioni a First Class Citizen, ovvero li intende come dei valori che potete assegnare a variabili, passare come parametri e ritornate come risultati.

Vediamo qualche esempio in Swift

La funzione qui sopra NON è una Higher Order Function infatti non riceve e non restituisce una funzione.

Ricevere una funzione come parametro

Vediamo ora una funzione che riceve come parametro un’altra funzione

In questo caso repeatTwice è Higher Order Function e possiamo invocarla usando la comoda sintassi trailing closure

Ed ecco l’output prodotto

Funzioni che ritornano funzioni

Esaminiamo infine il seguente esempio

Abbiamo definito una funzione operation che riceve come parametro una stringa (name) e che ritorna una funzione che a sua volta prende 2 interi e ritorna un intero.

Nello switch stiamo esaminando il parametro name, se equivale alla parola “add” allora ritorniamo una closure che prende a e b e ritorna la loro somma.

Analogamente se la parola è subtract ritorniamo una closure che riceve 2 interi e ritorna la loro differenza.

In tutti gli altri casi generiamo un fatal error (è solo un esempio, fate attenzione a dove inserite l’istruzione fatalError() nel codice perché termina l’esecuzione dell’intera app!

Vediamo ora come invocarla

 

Luca Angeletti

Trainer • Developer • Writer

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *