Eu quero criar uma classe que possa armazenar objetos em conformidade com um determinado protocolo. Os objetos devem ser armazenados em uma matriz digitada. De acordo com a documentação da Swift, os protocolos podem ser usados como tipos:
Por ser um tipo, você pode usar um protocolo em muitos lugares onde outros tipos são permitidos, incluindo:
- Como um tipo de parâmetro ou tipo de retorno em uma função, método ou inicializador
- Como o tipo de uma constante, variável ou propriedade
- Como o tipo de itens em uma matriz, dicionário ou outro contêiner
No entanto, o seguinte gera erros do compilador:
O protocolo 'SomeProtocol' só pode ser usado como uma restrição genérica porque possui requisitos de tipo Próprio ou associado
Como você deve resolver isso:
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)
}
}
}