八、数学和集合操作-Mathematical and Aggregate Operators(Rx.playground翻译)

注意:使用本例中的代码首先应该导入头文件,代码如下:

import RxSwift

Mathematical and Aggregate Operators

通过一个Observable序列操作整个序列的元素的操作。

toArray

将一个Observable序列转换成一个数组,把数组作为一个新的单元素的Observable序列发散,然后终止。了解更多

example("toArray") {
    let disposeBag = DisposeBag()

    Observable.range(start: 1, count: 10)
        .toArray()
        .subscribe { print($0) }
        .disposed(by: disposeBag)
}

Debug Area 输出:
--- toArray example ---
Next([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Completed


reduce

使用一个初始值作为参数,并且�应用累加器闭包于一个源Observable序列发散的所有的元素上,最后返回一个结果集合作为单个元素的Observable序列。了解更多

example("reduce") {
    let disposeBag = DisposeBag()

    Observable.of(10, 100, 1000)
    .reduce(1, accumulator: +)
    .subscribeNext { print($0) }
    .disposed(by: disposeBag)
}

Debug Area 输出:
--- reduce example ---
1111


concat

按照顺序把多个 Observable 序列中的元素加入到一个Observable 序列中,在下一个序列发散元素之前等待每个序列成功终止。�了解更多

example("concat") {
    let disposeBag = DisposeBag()

    let subject1 = BehaviorSubject(value: "🍎")
    let subject2 = BehaviorSubject(value: "🐶")

    let variable = Variable(subject1)

    variable.asObservable()
        .concat()
        .subscribe { print($0) }
        .disposed(by: disposeBag)

    subject1.onNext("🍐")
    subject1.onNext("🍊")

    variable.value = subject2

    subject2.onNext("I would be ignored")
    subject2.onNext("🐱")

    subject1.onCompleted()
    subject2.onNext("🐭")
}

Debug Area 输出:
--- concat example ---
next(🍎)
next(🍐)
next(🍊)
next(🐱)
next(🐭)


下一篇: ��九、可连接的操作-Connectable Operators(Rx.playground翻译)�

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容