2017-06-03 1 views
-2

Vous cherchez à passer une fonction en paramètre (comme un onCompletion) qui sera appelée dans le cadre de l'appel de fonction dans Swift (similaire aux fermetures javascript). Quelle est la meilleure pratique ici?Comment passez-vous une fonction en tant que paramètre d'une fonction swift?

code:

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

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

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

// caller is called 
caller() 
+1

Lisez le guide linguistique rapide. https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html – Alexander

+0

merci pour votre réponse élaborée – KingChintz

+1

Je ne vais pas perdre mon temps à écrire une réponse élaborée à une question qui serait On m'a répondu facilement si vous aviez fait preuve de diligence raisonnable et lu le guide linguistique ou fait un tour de table avant de venir ici. Il y a une raison pour laquelle vous avez trois votes négatifs. – Alexander

Répondre

3

Vous pouvez définir votre fonction comme ceci.

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

    onCompletion() 
} 

Cette fonction prend en paramètre une fermeture (parfois appelée fonction de rappel ou anonyme dans d'autres langues). Cette fermeture n'a aucun paramètre et aucune valeur de retour.

Si vous voulez la fermeture d'avoir des paramètres que vous pourriez faire quelque chose comme ceci:

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

    onCompletion("foo", 5) 
} 

Cette fonction prend deux paramètres a String et un Int.

Si vous voulez que la fermeture ait un type de retour, changez le type (au-dessus de Void) après le ->.

+0

parfait merci Taylor – KingChintz