美文网首页iOS-swiftRXswiftRxSwift干货
RxSwift文档翻译6 -- Mathematical and

RxSwift文档翻译6 -- Mathematical and

作者: 小白猿 | 来源:发表于2017-06-01 18:51 被阅读80次

前言

本章中主要介绍数学和一些综合运算符,操作是作用于整个观察序列的元素

Mathematical and Aggregate Operators

  • toArray
    将观察序列多个元素转换为单个元素的序列,这个元素就是源序列元素的数组集合
example("toArray") {
      let disposeBag = DisposeBag()
      Observable.range(start: 1, count: 10)
                .toArray()
                .subscribe { print($0) }
                .disposed(by: disposeBag)
        }

// 控制台打印的结果:
--- toArray example ---
next([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
completed
  • reduce
    类似于scan,有一个种子值和一个操作符,对种子值作为第一个值与第一个元素进行计算,结果作为新的种子值与第二个元素进行计算。与scan不用的是,reduce的是取最后一个计算结果作为新的序列的元素
example("reduce") {
    let disposeBag = DisposeBag()
    
    Observable.of(10, 100, 1000)
        .reduce(1, accumulator: +)
        .subscribe(onNext: { print($0) })
        .disposed(by: disposeBag)
}

// 控制台打印的结果:
--- reduce example ---
1111
  • concat
    用于多个序列的事件元素的链接,按照顺序的方式进行连接,当一个序列的元素连接完毕并结束后在链接下一个序列

本文作者注:我所理解的结束,应该是序列发出Complete事件或者Error事件,并且在官方实例中子序列用的是BehaviorSubject,仅发出最近的元素,所以在比如A序列在前,B序列在后,B发出b1, b2两个元素,然后A Complete,由于b2是最近的元素,所以在链接的时候b1就会被忽略了*

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("🐭")
}

// 控制台打印的结果:
--- concat example ---
next(🍎)
next(🍐)
next(🍊)
next(🐱)
next(🐭)

下一篇:RxSwift文档翻译7 - Connectable Operators

相关文章

  • RxSwift文档翻译6 -- Mathematical and

    前言 本章中主要介绍数学和一些综合运算符,操作是作用于整个观察序列的元素 Mathematical and Agg...

  • RxSwift的使用详解01

    一. RxSwift简介 推荐: RxSwift官方文档中文: RxSwift官方文档的中文翻译 RxSwift是...

  • RxSwift-文档翻译

    RxSwift-文档翻译 翻译全文地址翻译后的完整项目地址 对RxSwift 官方playground的翻译,pl...

  • RXSwift

    【领略RxSwift源码】- 订阅的工作流 RxSwift文档翻译1-Creating and Subscribi...

  • RxSwift Mathematical and aggrega

    目录: RxSwift - 入门RxSwift Observable CreateRxSwift Subject...

  • RxSwift资料

    RxSwift 中文文档 · RxSwift 中文文档

  • RxSwift 小记-Mathematical and Aggr

    (*useful)标记:目前觉得有用的函数//FIXME 标记:待补充 toArray: 将可观察序列转换为数组...

  • RxSwift 使用详解系列

    RxSwift文档 RxSwift QQ 交流群: 424180219 RxSwift 中文文档 持续更新 提供电...

  • Prize

    1)翻译:The international Mathematical Olympiad is highly pr...

  • Swift - RxSwift入门介绍

    RxSwift介绍 RxSwift主页RxSwift中文文档 RxSwift 是 ReactiveX 家族的重要一...

网友评论

  • Jt_Self:第一个toarray的example代码写错咯!作者辛苦
    小白猿:刚查了一下源码,确实写错了,改过来了,多谢指正

本文标题:RxSwift文档翻译6 -- Mathematical and

本文链接:https://www.haomeiwen.com/subject/dowefxtx.html