RXSwift Zip оператор N елементи чрез изброим

Използвам оператора zip на RxSwift, за да комбинирам Observable елемента. Искам да комбинирам повече от 8 (максимумът, поддържан в момента). RxSwift има ли оператор zip, подобен на RxJava? - Документация за RxJava Zip оператор


person AJ9    schedule 04.08.2016    source източник
comment
И така, отговорът по-долу удовлетвори ли въпроса ви? Не съм сигурен защо не си го приел.   -  person solidcell    schedule 14.08.2016


Отговори (1)


Може да обработва повече от 8, ако го използвате на CollectionType.

Ето дефиницията на метода:

extension CollectionType where Generator.Element : ObservableType {
    public func zip<R>(resultSelector: [Generator.Element.E] throws -> R) -> Observable<R> {
        return ZipCollectionType(sources: self, resultSelector: resultSelector)
    }
}

Така че вместо да го използвате по този начин:

Observable.zip(o1, o2, o3, o4, o5, o6, o7, o8, o9) { ... }

Използвайте го така:

[o1, o2, o3, o4, o5, o6, o7, o8, o9].zip { ... }
person solidcell    schedule 04.08.2016
comment
Това е интересно, има ли странични ефекти? - person Graham Smith; 04.08.2016
comment
Няма странични ефекти. Държи се като Observable.zip. - person solidcell; 04.08.2016
comment
Ако чета това правилно, той третира колекцията като набор от наблюдаеми източници, след което ги компресира, когато се излъчват? Вярно ли е? - person Graham Smith; 04.08.2016
comment
Този отговор не се компилира със Swift 3.1 и RxSwift 3.4.1. бихте ли го актуализирали, моля? - person matt.writes.code; 15.06.2017
comment
Горното вече не се компилира с Xcode 12. Някой друг сблъсквал ли се е с този проблем? - person klmitchell2; 14.10.2020