gpt4 book ai didi

swift - 无法显式特化泛型函数、多个泛型

转载 作者:行者123 更新时间:2023-11-30 10:39:51 24 4
gpt4 key购买 nike

围绕我的问题有很多答案,但我尝试过的解决方案并没有完全解决问题。我不确定它是否与拥有多个泛型或其他东西有关(对于 Swift 来说也是较新的,所以仍然围绕语法进行思考)。

我注意到我的 API 请求代码中有很多共性,因此我决定抽象出主要工作,并让它与任何可编码的请求/响应对象一起工作。这是我的主要请求方法:

private func sendRequest<T: Encodable, U: Decodable>(url: URL, requestModel: T) -> Promise<U> 

我试图这样调用它:

public func signIn(requestModel: SignInRequest) -> Promise<SignInResponse> {
let url = URL(string: authURL + "/signin")!

//getting compile error "Cannot explicitly specialize generic function" on this line
return sendRequest<SignInRequest, SignInResponse>(url: url, requestModel: requestModel)
}

我尝试直接分配给返回对象:

let x : Promise<SignInResponse> = sendRequest(...)
return x

帮助编译器解决问题(如其他解决方案中的建议),但仍然存在同样的问题。有什么见解吗?

最佳答案

我最终使用了基于这篇文章的解决方案:https://stackoverflow.com/a/36232002/1088099

我明确传入请求和响应对象类型作为参数:

private func sendRequest<T: Encodable, U: Decodable>(requestModelType: T.Type, responseModelType: U.Type, url: URL, requestModel: T) -> Promise<U> 

并调用:

public func signIn(requestModel: SignInRequest) -> Promise<SignInResponse> {
let url = URL(string: authURL + "/signin")!

return sendRequest(requestModelType:SignInRequest.self,
responseModelType:SignInResponse.self,
url: url,
requestModel: requestModel)
}

不是我所希望的那么干净的解决方案,但有效。

关于swift - 无法显式特化泛型函数、多个泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57077310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com