请考虑这个设置:
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)
}
}
为什么我不能打电话completion(result)
?我收到此错误:
无法将类型“Result”的值转换为预期参数类型“Result<_>”
有什么解决办法吗?
您正在使用非通用具体类型MyModel
在通用函数中,这是行不通的。
你可以做这样的事情
class Test {
func test<T: MyProcotol>(item: T, completion: (Result<T>) -> Void) {
let result : Result<T> = .success(value: item)
completion(result)
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)