注意:使用本例中的代码首先应该导入头文件,代码如下:
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(🐭)