2016-12-13 1 views
-1

Je suis un tutoriel qui utilise 'in' comme ceci: let completion = {(error: Error?) in }. Je cherchais et trouvais une réponse très similaire sur stackoverflow mais ça ne touche pas si le corps se termine par 'in' donc je suis confus parce que je pensais 'in' signifie qu'un nouveau corps de fonction arrivait ensuite. Voici la ressource de débordement de pile d'origine, j'ai trouvé: Similar questionLa fonction Swift anonyme se termine par 'in'

Voici la mise en œuvre complète de la façon dont son être utilisé jusqu'à présent dans un test:

func testLogin_MakesRequestWithUsernameAndPassword() { 

     let sut = APIClient() 

     let mockURLSession = MockURLSession() 

     sut.session = mockURLSession 

     let completion = {(error: Error?) in } 

     sut.loginUserWithName("dasdom", password: "1234", completion: completion) 

    } 

Répondre

1

Vous avez raison que le corps de fermeture doit apparaître après in. Cependant, vous oubliez que la fonction/corps de fermeture peut être vide, donc ceci est tout à fait valable, semblable à la déclaration d'une fonction avec un corps vide:

func doSomething() { 
} 

Avec la fermeture, il est également courant d'écrire { _ in } pour prévenir le compilateur vous avertit du paramètre inutilisé.