到目前为止我所掌握的是:
>
我定义了typealias
完成处理程序
typealias UserCompletionHandler = (_ object: User?, _ error: ApiError?) -> Void
我创建了一个服务函数,它使用这个typealias
func login(email: String, password: String, completion: UserCompletionHandler) {
// ...
// this part here handles API call and parsing logic
// ...
completion(user, nil)
}
我想实现的是,通过引入命名参数,具有更可读的带参数的完成回调。想法就是以这样的方式结束:
completion(object: user, error: nil)
或者更好地使error参数可选,因此我可以只调用
completion(object: user)
问题是我找不到一种方法来更改typealias
定义来实现这一点。
显然这是不可能的。您可以在swift evolution提案中找到这个选择背后的解释:0111-remove-arg-label-type-significance.md
函数类型只能根据形参和返回值的类型来定义。将禁止写出包含参数标签的函数类型