swift - 一个类如何符合具有协议约束关联类型的协议?
问题描述
问题标题很难理解,但是当您查看代码示例时,您会明白我的意思。我试图通过使用协议 B 作为类型别名来使 D 类符合协议 C。我认为这样就可以了,因为 B 也符合 A,这是在 C 中的关联类型中定义的约束,但是编译器会抛出错误。我想做的事是不可能的吗?
protocol A { }
protocol B: A { }
protocol C {
associatedtype T: A
}
class D: C {
typealias T = B
}
注意:如果 B 是一个类而不是一个协议,它就可以工作。
解决方案
概述
- 不确定您是否真的需要关联类型
- 改用基本协议
代码
protocol A { }
protocol B: A { }
protocol C {
func f1(something : A)
}
class D : C {
func f1(something: A) { }
}
class X : B {}
let d1 = D()
d1.f1(something: X())
推荐阅读
- python - Tensorflow 初始化变量
- c# - 为什么 .ToList() 和 AsEnumerable() 使我的查询区分大小写但 AsQueryable() 不是?
- algorithm - 在跳过列表中查找第 k 个元素 - 需要解释
- chef-infra - 我可以使用 Chef 的 sensitive 属性执行多行 BASH 代码的哪个 Chef 资源?
- javascript - 防止我的 javascript 在另一个网站上运行
- java - 哈希表 Java
- html - 卡在 HTML 块的响应高度上
- java - HashMap .get() 为除最后一个值之外的每个值返回 null
- mongodb - 未启用平衡器时将数据插入 mongo 中的空分片数据库会导致所有数据都在一个分片中
- mysql - 给定启动日期 (y/m/d) 和截止日期 (y/m/d) 列,如何在 SQL 上编写持续时间命令?