2017-06-03 25 views
-2

Suche nach einer Funktion als Parameter übergeben (wie eine onCompletion), die als Teil des Funktionsaufrufs in Swift (ähnlich wie JavaScript-Schließungen) aufgerufen wird. Was ist die beste Vorgehensweise hier?Wie übergibt man eine Funktion als Parameter einer Funktion swift?

Code:

func didFinishFunc(onCompletion: func) { 
    func() 
} 

func onCompletionFunc() 
{ 
    print("completed.") 
} 

func caller() 
{ 
    didFinishFunc(onCompletion: onCompletionFunc) 
} 

// caller is called 
caller() 
+1

Lesen Sie den schnellen Sprachführer. https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html – Alexander

+0

danke für Ihre ausführliche Antwort – KingChintz

+1

Ich werde nicht meine Zeit verschwenden schreiben eine ausführliche Antwort auf eine Frage, die würde wurden leicht beantwortet, wenn Sie Ihre Sorgfaltspflicht erfüllt und den Sprachführer gelesen oder gegoogelt haben, bevor Sie hierher gekommen sind. Es gibt einen Grund, warum Sie 3 Stimmen haben. – Alexander

Antwort

3

Sie können Ihre Funktion so definieren.

func didFinishFunc(onCompletion:() -> Void) { 
    // your function implementation here 

    onCompletion() 
} 

Diese Funktion akzeptiert eine Schließung (in anderen Sprachen manchmal als Callback oder anonyme Funktion bezeichnet) als Parameter. Diese Schließung hat keine Parameter und keinen Rückgabewert.

Wenn Sie den Verschluss haben Parameter wollen könnten Sie so etwas tun:

func didFinishFunc(onCompletion: (String, Int) -> Void) { 
    // your function implementation here 

    onCompletion("foo", 5) 
} 

Diese Funktion ist in zwei Parameter nimmt ein String und ein Int.

Wenn der Abschluss einen Rückgabetyp haben soll, ändern Sie den Typ (darüber Void) nach dem ->.

+0

perfekt danke Taylor – KingChintz

Verwandte Themen