【发布时间】:2017-01-10 09:27:57
【问题描述】:
我有一个函数负责在应用程序中发出 HTTP 请求。基本上,它设置了所有必需的标头、超时等……等等……
然后,当请求完成时,我运行 2 个函数(由开发人员提供):whenSuccess/whenError(取决于调用的结果)和whenComplete(不管调用的结果)。我希望最后一个能够接收到whenSuccess 函数的结果。
我将doRequest 函数声明为
private func doRequest<S>(whenSuccess: (_ json: JSON?)->(S?),
whenError: (_ description: String)->(),
whenComplete: Optional<(S?)->()>) {
// yada yada yada
}
因此,开发人员提供了一个获取JSON 并返回泛型的函数。如果调用whenError,则以nil为参数调用whenComplete。
我正在调用它
doRequest<Int>(whenSuccess: { (json) -> (Int?) in //Cannot specialize a non-generic definition
return 5
}, whenError: { (error) in
}) { (success) in
}
我收到错误评论:
不能专门化非泛型定义
知道这是否可以做到以及如何做到?
【问题讨论】: