Использование протоколов в качестве типов массивов и параметров функций в swift

Я хочу создать класс, который может хранить объекты, соответствующие определенному протоколу. Объекты должны храниться в типизированном массиве. Согласно документации Swift протоколы могут использоваться как типы:

Поскольку это тип, вы можете использовать протокол во многих местах, где разрешены другие типы, включая:

Как тип параметра или тип возвращаемого значения в функции, методе или инициализатореКак тип константы, переменной или свойстваКак тип элементов в массиве, словаре или другом контейнере

Однако следующее генерирует ошибки компилятора:

Протокол 'SomeProtocol' может использоваться только в качестве общего ограничения, поскольку он имеет Self или требования к связанному типу.

Как вы должны решить это:

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)
        }
    }
}

Ответы на вопрос(7)

Ваш ответ на вопрос