注意:使用本例中的代碼首先應(yīng)該導(dǎo)入頭文件,代碼如下:
import RxSwift
Mathematical and Aggregate Operators
通過一個(gè)Observable
序列操作整個(gè)序列的元素的操作。
toArray
將一個(gè)Observable
序列轉(zhuǎn)換成一個(gè)數(shù)組戴甩,把數(shù)組作為一個(gè)新的單元素的Observable
序列發(fā)散,然后終止闪彼。了解更多
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
使用一個(gè)初始值作為參數(shù)甜孤,并且?應(yīng)用累加器閉包于一個(gè)源Observable
序列發(fā)散的所有的元素上,最后返回一個(gè)結(jié)果集合作為單個(gè)元素的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
按照順序把多個(gè) Observable
序列中的元素加入到一個(gè)Observable
序列中缴川,在下一個(gè)序列發(fā)散元素之前等待每個(gè)序列成功終止。?了解更多
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(??)