Swift 泛型错误:无法将类型“Type”的值转换为预期参数类型“Type<_>”

2023-11-22

请考虑这个设置:

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(使用前将#替换为@)

Swift 泛型错误:无法将类型“Type”的值转换为预期参数类型“Type<_>” 的相关文章

随机推荐