Funzioni annidate in Swift (con esempi)

In questo articolo imparerai a conoscere le funzioni nidificate in Swift e come funziona con gli esempi.

Se una funzione esiste all'interno del corpo di un'altra funzione, si chiama funzione annidata.

Sintassi di una funzione annidata

 func nomefunzione () (// istruzioni della funzione esterna func anotherFuncname () (// istruzioni della funzione interna)) 

Qui, la funzione anotherFuncnameè all'interno del corpo di un'altra funzione funcname.

Va notato che le funzioni interne possono essere chiamate e utilizzate solo all'interno della funzione di inclusione (funzione esterna).

Esempio 1: funzione nidificata senza valori di ritorno

 func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack") 

Quando esegui il programma, l'output sarà:

Ciao! Jack

Nel programma precedente, la funzione annidata addGreetingAndPrint()viene chiamata dalla funzione che la racchiude outputMessageByGreeting().

L'istruzione outputMessageByGreeting("Jack")chiama la funzione esterna. E l'istruzione addGreetingAndPrint()all'interno della funzione esterna chiama il metodo che restituisce Hello! Jack nella console.

Non è possibile chiamare la funzione addGreetingAndPrintal di fuori della funzione outputMessageByGreeting.

Esempio 2: funzione annidata con parametri e valori restituiti

Le funzioni annidate possono contenere funzioni con parametri e valori restituiti.

 func operate(with symbol:String) -> (Int, Int) -> Int ( func add(num1:Int, num2:Int) -> Int ( return num1 + num2 ) func subtract(num1:Int, num2:Int) -> Int ( return num1 - num2 ) let operation = (symbol == "+") ? add : subtract return operation ) let operation = operate(with: "+") let result = operation(2, 3) print(result) 

Quando esegui il programma, l'output sarà:

 5

Nel programma sopra,

  • la funzione esterna è operate(), con valore di ritorno di tipo Funzione (Int,Int) -> Int.
  • e le funzioni interne (annidate) sono add()e subtract().

La funzione annidata add()e subtract()in un certo senso vengono utilizzate al di fuori della funzione che la racchiude operate(). Ciò è possibile perché la funzione esterna restituisce una di queste funzioni.

Abbiamo usato la funzione interna al di fuori della funzione di inclusione operate()come operation(2, 3). Il programma chiama internamente add(2, 3)quale output 5 nella console.

Articoli interessanti...