English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Funzione Annidata in Swift

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.

Sintassi delle funzioni annidate

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).

Esempio 1: Funzione annidata senza valore di ritorno

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.

Esempio 2: Funzione annidata con parametri e valori di ritorno

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.