一尘不染

“ Protocol…只能用作通用约束,因为它具有Self或关联的类型要求”是什么意思?

swift

我正在尝试创建一个字典(实际上是HashSet),该字典以Swift中的自定义协议为键,但是它给了我标题错误:

协议“ myProtocol”只能用作通用约束,因为它具有“自我”或相关类型要求

而且我不能做它的正面或反面。

protocol Observing: Hashable { }

var observers = HashSet<Observing>()

阅读 243

收藏
2020-07-07

共1个答案

一尘不染

协议Observing从协议继承Hashable,而协议又从协议继承Equatable。协议Equatable具有以下要求:

func ==(lhs: Self, rhs: Self) -> Bool

并且包含Self在其中某处的协议只能在类型约束中使用,而不能在任何地方使用。

这是一个类似的问题。

2020-07-07