2016-12-13 4 views
-1

Я следую учебнику, который использует 'in' следующим образом: let completion = {(error: Error?) in }. Я искал и нашел близкий ответ на stackoverflow, но он не затрагивает, если тело заканчивается «in», поэтому я смущен, потому что я думал «в» означает, что следующее тело функции будет дальше. Вот инициирующее переполнение стека ресурсов я нашел: Similar questionБыстрая анонимная функция заканчивается на '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 }, чтобы предотвратить компилятор предупреждает вас о неиспользуемом параметре.

Смежные вопросы