English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo articolo, imparerai le funzioni annidate in Swift e come vengono utilizzate con esempi.
Se c'è unaFunzioneEsiste all'interno del corpo di un'altra funzione, si chiama funzione annidata.
func funcname() { //Statement della funzione esterna func anotherFuncname() { //Statement della funzione interna
In questo caso, la funzione anotherFuncname si trova all'interno del corpo della funzione funcname.
Deve essere notato che le funzioni interne possono essere chiamate e utilizzate solo all'interno della funzione esterna (funzione di chiusura).
func outputMessageByGreeting(_ message: String) { func addGreetingAndPrint() { print("Hello! \(message)") addGreetingAndPrint() outputMessageByGreeting("Jack")
Quando si esegue il programma, l'output è:
Hello! Jack
Nel programma sopra, la funzione annidata addGreetingAndPrint() è stata chiamata dalla funzione esterna outputMessageByGreeting().
La statement outputMessageByGreeting("Jack") chiama la funzione esterna. La statement all'interno della funzione esterna addGreetingAndPrint() chiama l'output Hello Jack!
Non puoi chiamare la funzione addGreetingAndPrint al di fuori della funzione outputMessageByGreeting.
Le funzioni annidate possono contenere funzioni con parametri e valori di ritorno.
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 si esegue il programma, l'output è:
5
Nel programma sopra:
La funzione esterna è operate(), il tipo di ritorno è Function (Int,Int) -> Int.
Le funzioni interne (annidate) sono add() e subtract().
La funzione esterna in uso, add() e subtract(), è outside della funzione chiusa operate(). Questo è possibile perché la funzione esterna restituisce una di queste funzioni.
Abbiamo utilizzato le funzioni interne oltre alla funzione chiusa operate() come operation(2,3). La funzione interna chiama add(2,3) e scrive 5 nel terminale.