type - generic functions swift 4
¿Qué significa "Protocolo... solo se puede usar como restricción genérica porque tiene requisitos de tipo propio o asociado"? (2)
HashSet crear un diccionario (en realidad, un HashSet ) codificado en un protocolo personalizado en Swift, pero me da el error en el título:
El protocolo ''myProtocol'' solo se puede usar como restricción genérica porque tiene requisitos de tipo propio o asociado
y no puedo hacer cabezas ni colas de eso.
protocol Observing: Hashable { }
var observers = HashSet<Observing>()
Actualizar:
Para obtener la mejor explicación posible de por qué es así, mira este video .
El protocolo Observing
hereda del protocolo Hashable
, que a su vez hereda del protocolo Equatable
. El protocolo Equatable
tiene el siguiente requisito:
func ==(lhs: Self, rhs: Self) -> Bool
Y un protocolo que contenga Self
en su interior no se puede usar en ninguna parte excepto en una restricción de tipo.
Here hay una pregunta similar.
Para resolver esto podrías usar genéricos. Considera este ejemplo:
class GenericClass<T: Observing> {
var observers = HashSet<T>()
}