我希望在协议中使用associatedtype,并使用where来约束关联类型的类型与协议的类型相同,这有可能吗?
protocol Transformable {
associatedtype TransformType
func transform() -> TransformType
}
func repeatTransform<T: Transformable>(_ transformable: T) where T.TransformType: Transformable, T.TransformType == T.Type {
let t1 = transformable.transform()
let t2 = t1.transform()
}我得到了:
相同类型的约束类型“T.Type”不符合所需的协议“可转换”。
谢谢!
发布于 2018-07-25 21:53:29
T已经是该类型了,您不希望在约束中执行T.Type。T.TransformType: Transformable也是多余的,所以您可以删除它。
它应该是:
func repeatTransform<T: Transformable>(_ transformable: T) where T.TransformType == Thttps://stackoverflow.com/questions/51528117
复制相似问题