Swift 匿名函数结束于 'in'

Swift anonymous function ends in 'in'

我正在学习使用 'in' 的教程,如下所示:let completion = {(error: Error?) in }。我正在搜索并在 Whosebug 上找到了一个非常相似的答案,但是它没有涉及主体是否以 'in' 结尾所以我很困惑,因为我在想 '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)

    }

你是对的,闭包体应该出现在in之后。但是,您忘记了 function/closure 主体可以是 ,因此这是完全有效的,类似于声明一个具有空主体的函数:

func doSomething() {
}

对于闭包,通常编写 { _ in } 以防止编译器警告您未使用的参数。