注意:使用本例中的代碼首先應(yīng)該導(dǎo)入頭文件,代碼如下:
import RxSwift
Filtering and Conditional Operators
有選擇地從源Observable序列發(fā)散元素的操作。
filter
發(fā)散一個源Observable序列中滿足指定條件的那些元素。?了解更多

example("filter") {
let disposeBag = DisposeBag()
Observable.of(
"??", "??", "??",
"??", "??", "??",
"??", "??", "??")
.filter {
$0 == "??"
}
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- filter example ---
??
??
??
distinctUntilChanged
壓縮一個源Observable序列中發(fā)散的連續(xù)重復(fù)的元素。?了解更多

example("distinctUntilChanged") {
let disposeBag = DisposeBag()
Observable.of("??", "??", "??", "??", "??", "??", "??")
.distinctUntilChanged()
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- distinctUntilChanged example ---
??
??
??
??
??
elementAt
發(fā)散一個源Observable序列中指定索引的元素。?了解更多

example("elementAt") {
let disposeBag = DisposeBag()
Observable.of("??", "??", "??", "??", "??", "??")
.elementAt(3)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- elementAt example ---
??
single
發(fā)出一個源Observable序列中的第一個元素(或者滿足條件的第一個元素)。如果這個源Observable序列不能發(fā)出一個元素或者根據(jù)條件查找到兩個以上的元素將會?拋出一個錯誤。
example("single") {
let disposeBag = DisposeBag()
Observable.of("??", "??", "??", "??", "??", "??")
.single()
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- single example ---
??
example("single with conditions") {
let disposeBag = DisposeBag()
Observable.of("??", "??", "??", "??", "??", "??")
.single { $0 == "??"}
.subscribe { print($0) }
.disposed(by: disposeBag)
Observable.of("??", "??", "??", "??", "??", "??")
.single { $0 == "??"}
.subscribe { print($0) }
.disposed(by: disposeBag)
Observable.of("??", "??", "??", "??", "??", "??")
.single { $0 == "??"}
.subscribe { print($0) }
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- single with conditions example ---
next(??)
completed
next(??)
error(Sequence contains more than one element.)
error(Sequence doesn't contain any elements.)
take
從一個源Observable序列的開始元素?發(fā)散指定數(shù)量的元素。?了解更多

example("take") {
let disposeBag = DisposeBag()
Observable.of("??", "??", "??", "??", "??", "??")
.take(3)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- take example ---
??
??
??
takeLast
從一個源Observable序列的結(jié)尾元素?發(fā)散指定數(shù)量的元素。?了解更多

example("takeLast") {
let disposeBag = DisposeBag()
Observable.of("??", "??", "??", "??", "??", "??")
.takeLast(3)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- takeLast example ---
??
??
??
takeWhile
發(fā)出一個源Observable序列中?的只要指定條件的值為true的元素。?了解更多

example("takeWhile") {
let disposeBag = DisposeBag()
Observable.of(1, 2, 3, 4, 5, 6)
.takeWhile { $0 < 4 }
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- takeWhile example ---
1
2
3
takeUntil
從一個源Observable序列中?發(fā)散元素直到一個參照Observable序列發(fā)出一個元素。?了解更多

example("takeUntil") {
let disposeBag = DisposeBag()
let sourceSequence = PublishSubject<String>()
let referenceSequence = PublishSubject<String>()
sourceSequence
.takeUntil(referenceSequence)
.subscribe { print($0) }
.disposed(by: disposeBag)
sourceSequence.onNext("??")
sourceSequence.onNext("??")
sourceSequence.onNext("??")
referenceSequence.onNext("??")
sourceSequence.onNext("??")
sourceSequence.onNext("??")
sourceSequence.onNext("??")
}
Debug Area 輸出:
--- takeUntil example ---
next(??)
next(??)
next(??)
completed
skip
從一個源Observable序列的開始發(fā)散元素,并且跳過指定數(shù)量的元素。了解更多

example("skipWhile") {
let disposeBag = DisposeBag()
Observable.of("??", "??", "??", "??", "??", "??")
.skip(2)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- skip example ---
??
??
??
??
skipWhile
從一個源Observable序列的開始發(fā)散元素,并且跳過滿足條件的元素。了解更多

example("skipWhile") {
let disposeBag = DisposeBag()
Observable.of(1, 2, 3, 4, 5, 6)
.skipWhile { $0 < 4 }
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- skipWhile example ---
4
5
6
skipWhileWithIndex
從一個源Observable序列的開始發(fā)散元素,并且跳過滿足條件的索引的元素。這個閉包查詢了每個元素。
example("skipWhileWith") {
let disposeBag = DisposeBag()
Observable.of("??", "??", "??", "??", "??", "??")
.skipWhileWithIndex { element, index in
index < 3
}
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
}
Debug Area 輸出:
--- skipWhileWithIndex example ---
??
??
??
skipUntil
跳過一個源Observable序列發(fā)送的元素,直到一個參照Observable序列發(fā)出一個元素。了解更多

example("skipUntil") {
let disposeBag = DisposeBag()
let sourceSequence = PublishSubject<String>()
let referenceSequence = PublishSubject<String>()
sourceSequence
.skipUntil(referenceSequence)
.subscribe { print($0) }
.disposed(by: disposeBag)
sourceSequence.onNext("??")
sourceSequence.onNext("??")
sourceSequence.onNext("??")
referenceSequence.onNext("??")
sourceSequence.onNext("??")
sourceSequence.onNext("??")
sourceSequence.onNext("??")
}
Debug Area 輸出:
--- skipUntil example ---
??
??
??
下一篇: 八、??數(shù)學(xué)和?集合操作-Mathematical and Aggregate Operators(Rx.playground翻譯)?