RxSwift 入門 その4
Filtering Observables
RxSwift 入門 その3 - タコさんブログ の続き。
今回は、RxSwiftプレイグラウンドの Filtering Observables の項。
この項では、ソースObservableから選択的にアイテム(イベント)を送信するオペレータに関して説明してある。
以下、プレイグラウンドで説明してあるFilteringに関するオペレータ。
- filter
- distinctUntilChanged
- take
RxSwiftには、この他にも以下のオペレータが利用できる:
- debounce
- elementAt
- ignoreElements
- sample
- skip
- takeLast
filter
filterオペレータは、述語が真となるアイテムをObservableから送信する。
let stream = (1..<10).toObservable() _ = stream .filter { $0 % 2 == 0 // 偶数をフィルタ } .subscribe { print($0) }
この出力は、
Next(2) Next(4) Next(6) Next(8) Completed
このマーブルダイアグラムは以下のように表せられる。
-1-2-3- ... -8-9| ↓ filter { x % 2 == 0 } ---2--- ... -8--|
distinctUntilChanged
distinctUntilChangedオペレータは、Observableによって送信される重複するアイテムを除去する。
let stream = [1, 2, 3, 1, 1, 4].toObservable() _ = stream .distinctUntilChanged() .subscribe { print($0) }
この出力は、
Next(1) Next(2) Next(3) Next(1) Next(4)
このマーブルダイアグラムは以下のように表せられる。
-1-2-3-1-1-4| ↓ distinctUntilChanged -1-2-3-1---4|
take
takeオペレータは、Observableによって送信される最初のn個のアイテムのみを送信する。
let stream = [1, 2, 3, 1, 1, 4].toObservable() _ = stream .take(2) .subscribe { print($0) }
この出力は、
Next(1) Next(2) Completed
このマーブルダイアグラムは以下のように表せられる。
-1-2-3-1-1-4| ↓ take(2) -1-2|