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

Swift verschachtelte Funktion

In diesem Artikel werden Sie die eingebetteten Funktionen in Swift und ihre Verwendung mit Beispielen lernen.

Wenn eineFunktionBefindet sich im Körper einer anderen Funktion, wird sie als eingebettete Funktion bezeichnet.

Syntax der eingebetteten Funktionen

func funcname() {
    //Außere Funktionsanweisungen
    func anotherFuncname() {
        //Innere Funktionsanweisungen
    }
}

Hier befindet sich die Funktion anotherFuncname im Körper einer anderen Funktion funcname.

Zu beachten ist, dass innere Funktionen nur im Körper der umschließenden Funktion (äußeren Funktion) aufgerufen und verwendet werden können.

Beispiel1Nestige Funktionen ohne Rückgabewert

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

Wenn das Programm ausgeführt wird, lautet die Ausgabe:

Hello! Jack

Im obigen Programm wurde die eingekapselte Funktion outputMessageByGreeting () von der eingebetteten Funktion addGreetingAndPrint () aufgerufen.

Der Ausdruck outputMessageByGreeting("Jack") ruft die externe Funktion auf. Der Ausdruck addGreetingAndPrint() im äußeren Funktionskörper ruft "Hello Jack!" aus.

Sie können die Funktion addGreetingAndPrint nicht außerhalb der Funktion outputMessageByGreeting aufrufen.

Beispiel2Nestige Funktionen mit Parameter und Rückgabewerten

Nestige Funktionen können Funktionen enthalten, die Parameter und Rückgabewerte haben.

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)

Wenn das Programm ausgeführt wird, lautet die Ausgabe:

5

Im obigen Programm

  • Externe Funktion ist operate(), Rückgabetyp Function (Int,Int) -> Int。

  • Interne (verschachtelte) Funktionen sind add() und subtract().

Die Art und Weise, wie verschachtelte Funktionen add() und subtract() verwendet werden, liegt außerhalb der geschlossenen Funktion operate(). Dies ist möglich, weil die äußere Funktion eine dieser Funktionen zurückgibt.

Wir haben interne Funktionen außerhalb der geschlossenen Funktion operate() als operation(2,3) im Programm intern aufgerufen add(2,3) im Kontrollfeld ausgeben5。