首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift:与where约束相关联的类型

Swift:与where约束相关联的类型
EN

Stack Overflow用户
提问于 2018-07-25 21:44:18
回答 1查看 328关注 0票数 0

我希望在协议中使用associatedtype,并使用where来约束关联类型的类型与协议的类型相同,这有可能吗?

代码语言:javascript
复制
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”不符合所需的协议“可转换”。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 21:53:29

T已经是该类型了,您不希望在约束中执行T.TypeT.TransformType: Transformable也是多余的,所以您可以删除它。

它应该是:

代码语言:javascript
复制
func repeatTransform<T: Transformable>(_ transformable: T) where T.TransformType == T
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51528117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档