我试图创建一个字典(实际上是HashSet)键入Swift中的自定义协议,但它给了我 Headers 中的错误:
协议'myProtocol'只能用作通用约束,因为它具有Self或相关类型要求
我无法做出头脑或尾巴 .
protocol Observing: Hashable { }
var observers = HashSet<Observing>()
更新:
为了最好的解释,为什么这是check out this video的方式 .
我试图创建一个字典(实际上是HashSet)键入Swift中的自定义协议,但它给了我 Headers 中的错误:
协议'myProtocol'只能用作通用约束,因为它具有Self或相关类型要求
我无法做出头脑或尾巴 .
protocol Observing: Hashable { }
var observers = HashSet<Observing>()
为了最好的解释,为什么这是check out this video的方式 .
2 回答
协议
Observing
继承自协议Hashable
,后者又从协议Equatable
继承 . 协议Equatable
具有以下要求:除了类型约束之外,在其中某处包含
Self
的协议不能在任何地方使用 .Here是一个类似的问题 .
要解决这个问题,您可以使用泛型 . 考虑这个例子: