2016-12-13 5 views
-1

Ich befolge ein Tutorial, das 'in' wie folgt verwendet: let completion = {(error: Error?) in }. Ich suchte und fand eine ähnliche Antwort auf stackoverflow, aber es berührt nicht, wenn der Körper mit "in" endet, also bin ich verwirrt, weil ich dachte "in" bedeutet, dass ein neuer Funktionskörper als nächstes kommt. Hier ist der Ursprung Stapelüberlauf Ressource Ich fand: Similar questionSwift anonyme Funktion endet in 'in'

Hier ist die vollständige Umsetzung der wie sein Sein bisher verwendeten in einem 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) 

    } 

Antwort

1

Sie haben Recht, dass Verschlusskörper nach in erscheinen soll. Sie jedoch, dass die Funktion/Verschlusskörper vergessen, kann leer, sein also das ist völlig gültig, ähnlich wie eine Funktion mit einem leeren Körper erklärt:

func doSomething() { 
} 

Mit Schließungen es auch üblich ist { _ in } zu schreiben zu verhindern der Compiler warnt Sie vor unbenutzten Parametern.