如果我们想对获取到的事件进行转换, 我们就需要变换, 例如将一个数字变为字符
map
和数组的 map 类似,可以将类型进行转换
如
Observable.from([1,2,3,4,5])
.map{"num is :\($0)"}
.subscribe { (event) in
self.print(event)
}.disposed(by: disposeBag)
flatMap
flatMap 可以将一个一个可观察者对象转换为另一个, 例如, 你在某种情况下返回失败你可以这样
Observable.of(1,2,3,4,5)
.flatMap{ $0 == 3 ? Observable<Int>.error(RxError.unknown) : Observable<Int>.just($0) }
.subscribe { (event) in
self.print(event)
}.disposed(by: disposeBag)
scan
scan 类似于序列的 reduce 操作, 不同的是, 他会把每次的值都发送出来
Observable.of(1,2,3,4,5)
.scan(0) { $0 + $1 }
.subscribe { (event) in
self.print(event)
}.disposed(by: disposeBag)
输出 1, 3, 6, 10, 15