请考虑以下设置:
protocol MyProcotol {
}
class MyModel: MyProcotol {
}
enum Result<T> {
case success(value: T)
case failure
}
class Test {
func test<T: MyProcotol>(completion: (Result<T>) -> Void) {
let model = MyModel()
let result = Result.success(value: model)
completion(result)
}
}
Run Code Online (Sandbox Code Playgroud)
我为什么不打电话completion(result)?我收到这个错误:
无法将"结果"类型的值转换为预期的参数类型"结果<_>"
任何解决方法?
您MyModel在泛型函数中使用了非泛型的具体类型,这是行不通的。
你可以做这样的事情
class Test {
func test<T: MyProcotol>(item: T, completion: (Result<T>) -> Void) {
let result : Result<T> = .success(value: item)
completion(result)
}
}
Run Code Online (Sandbox Code Playgroud)