Есть ли способ сообщить компилятору, что общий тип будет соответствовать определенному протоколу во время выполнения?Swift: введите общий тип в протокол
Компилятор не может этого знать, но я знаю, и из-за этого я могу запретить пользователям моей библиотеки указывать соответствующий тип.
public extension Observable {
public func cache(provider : Provider) -> Observable<E> {
return cacheInternal(provider) // error: Type 'Element' does not conform to protocol 'Mappable'
}
internal func cacheInternal<T : Mappable>(provider : Provider) -> Observable<T> {
//implementation
}
//what I want to avoid
public func cache<T : Mappable>(type: T.Type, provider : Provider) -> Observable<E> {
//implementation
}
}
И я не могу изменить общий тип «элемент (E)» в соответствии с отображаемым протоколом, поскольку Наблюдаемый класс, который я только расширяюсь.
Спасибо!