我正在尝试创建一个基于Swift中自定义协议(实际上是HashSet)的字典,但它给出了标题中的错误:
因为它有Self或相关类型要求,所以协议'myProtocol'只能用作泛型约束条件
但我无法理解这句话。
protocol Observing: Hashable { }
var observers = HashSet<Observing>()
我正在尝试创建一个基于Swift中自定义协议(实际上是HashSet)的字典,但它给出了标题中的错误:
因为它有Self或相关类型要求,所以协议'myProtocol'只能用作泛型约束条件
但我无法理解这句话。
protocol Observing: Hashable { }
var observers = HashSet<Observing>()
协议 Observing
继承自协议 Hashable
,后者又继承自协议 Equatable
。协议 Equatable
有以下要求:
func ==(lhs: Self, rhs: Self) -> Bool
如果一个协议中包含Self
,那么它只能在类型约束中使用。
这里有一个类似的问题。
Equatable
不一定意味着Equatable
,因为这并不是生成哈希码所必需的。 - devios1class GenericClass<T: Observing> {
var observers = HashSet<T>()
}