Quiero crear una clase que pueda almacenar objetos que se ajusten a un determinado protocolo. Los objetos deben almacenarse en una matriz escrita. De acuerdo con la documentación de Swift, los protocolos se pueden usar como tipos:
Debido a que es un tipo, puede usar un protocolo en muchos lugares donde se permiten otros tipos, incluidos:
- Como tipo de parámetro o tipo de retorno en una función, método o inicializador
- Como el tipo de una constante, variable o propiedad
- Como el tipo de elementos en una matriz, diccionario u otro contenedor
Sin embargo, lo siguiente genera errores de compilación:
El protocolo 'SomeProtocol' solo puede usarse como una restricción genérica porque tiene requisitos de tipo Self o asociados
¿Cómo se supone que debes resolver esto?
protocol SomeProtocol: Equatable {
func bla()
}
class SomeClass {
var protocols = [SomeProtocol]()
func addElement(element: SomeProtocol) {
self.protocols.append(element)
}
func removeElement(element: SomeProtocol) {
if let index = find(self.protocols, element) {
self.protocols.removeAtIndex(index)
}
}
}