我正在尝试创建一个字典(实际上是HashSet),该字典以Swift中的自定义协议为键,但是它给了我标题错误:
协议“ myProtocol”只能用作通用约束,因为它具有“自我”或相关类型要求
而且我不能做它的正面或反面。
protocol Observing: Hashable { } var observers = HashSet<Observing>()
协议Observing从协议继承Hashable,而协议又从协议继承Equatable。协议Equatable具有以下要求:
Observing
Hashable
Equatable
func ==(lhs: Self, rhs: Self) -> Bool
并且包含Self在其中某处的协议只能在类型约束中使用,而不能在任何地方使用。
Self
这是一个类似的问题。