可解码:无法推断通用参数 'T'
Decodable: Generic parameter 'T' could not be inferred
我已经盯着这个看了一段时间了,我似乎无法弄清楚如何帮助编译器。我想让这些函数通用,以便它们可以重用。
我删除了函数内部的所有内容以及调用 makeServiceCall
的位置,但我仍然看到错误:
Generic parameter 'T' could not be inferred
public func sendURLRequest<T: Decodable>(url: URL, completion: @escaping (Result<T, Error>) -> Void) {
}
public func makeServiceCall<T: Decodable>(url: URL, _ completion: @escaping (T)-> Void ) {
sendURLRequest(url: url){ response in
}
}
如果我将 T
添加到 sendURLRequest sendURLRequest<T>(url: url)
我会看到警告:
Cannot explicitly specialize a generic function
。 sendURLRequest<T: Decodable>
returns 另一个错误:
Binary operator '<' cannot be applied to operands of type '(URL,
@escaping (Result<_, Error>) -> Void) -> ()' and 'T.Type'
感谢您的帮助!我在 iOS 13
在这种情况下编译器无法推断类型,因此您需要显式指定它:
public func makeServiceCall<T: Decodable>(url: URL, _ completion: @escaping (T)-> Void ) {
sendURLRequest(url: url) { (response: Result<T, Error>) in
}
}
我已经盯着这个看了一段时间了,我似乎无法弄清楚如何帮助编译器。我想让这些函数通用,以便它们可以重用。
我删除了函数内部的所有内容以及调用 makeServiceCall
的位置,但我仍然看到错误:
Generic parameter 'T' could not be inferred
public func sendURLRequest<T: Decodable>(url: URL, completion: @escaping (Result<T, Error>) -> Void) {
}
public func makeServiceCall<T: Decodable>(url: URL, _ completion: @escaping (T)-> Void ) {
sendURLRequest(url: url){ response in
}
}
如果我将 T
添加到 sendURLRequest sendURLRequest<T>(url: url)
我会看到警告:
Cannot explicitly specialize a generic function
。 sendURLRequest<T: Decodable>
returns 另一个错误:
Binary operator '<' cannot be applied to operands of type '(URL, @escaping (Result<_, Error>) -> Void) -> ()' and 'T.Type'
感谢您的帮助!我在 iOS 13
在这种情况下编译器无法推断类型,因此您需要显式指定它:
public func makeServiceCall<T: Decodable>(url: URL, _ completion: @escaping (T)-> Void ) {
sendURLRequest(url: url) { (response: Result<T, Error>) in
}
}