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 addGreetingAndPrint
al 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()
esubtract()
.
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.