2016-12-13 51 views
-1

我正在按照如下所示使用'in'的教程:let completion = {(error: Error?) in }。我正在搜索並在stackoverflow上找到了一個類似的答案,但如果身體以'in'結尾,它就不會觸及,所以我很困惑,因爲我在考慮'in'表示接下來會有一個新的函數體。這裏是始發堆棧溢出的資源,我發現:Similar questionSwift匿名函數以'in'結尾

這裏是全面執行其如何被到目前爲止的測試中使用:

func testLogin_MakesRequestWithUsernameAndPassword() { 

     let sut = APIClient() 

     let mockURLSession = MockURLSession() 

     sut.session = mockURLSession 

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

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

    } 

回答

1

你是正確的,封閉體應該in後出現。但是,你忘記了,函數/閉鎖體可以,因此,這是完全有效的,類似聲明一個函數體爲空:

func doSomething() { 
} 

閉包也是常見寫{ _ in }防止編譯器會警告你關於未使用的參數。