Swift: расширение протокола, связанный тип которого является массивом - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь создать Rx-оператор, который работает с массивами. Я пробовал это простое расширение:

extension ObservableType where Element == Array<Any> {
    func beat<U>(_ beat: Observable<U>) -> Observable<Element.Element> {
        let lhs = self.flatMap { Observable.from($0) }
        return Observable.zip(lhs, beat).map { $0.0 }
    }
}

Теперь я отметил Array<Any>, потому что в противном случае я получаю Reference to generic type 'Array' requires arguments in <...>, но в этом случае возвращаемое значение конечно Observable<Any>.

Возможно ли даже вернуть наблюдаемое с фактическим Element массива?

1 Ответ

0 голосов
/ 26 апреля 2020

Скорее всего, вы хотите использовать параметризованные расширения , которые не реализованы в Swift 5.2.

В качестве обходного пути вы можете создать глобальную обобщенную функцию c, которая принимает Array<T> как второй параметр.

...