RxSwift公式使用例の<変換演算子>

この記事の例は、主に公式のサンプルコードからのものであり、ここからダウンロードできます。サンプルコードは少し変更されています。写真はreactivex.io/からのものです

この記事の主な機能は、プロジェクトを実行せずに、サンプルコードを表示し、対応するサンプルコードの効果を表示することです。

地図

シーケンスによって放出された要素に変換クロージャを適用し、変換されたObservable要素の新しいObservableシーケンスを返します

image.png

let disposeBag = DisposeBag()
Observable.of(1, 2, 3)
    .map { $0 * $0 }
    .subscribe(onNext: { print($0) })
    .disposed(by: disposeBag)

印刷

1
4
9

flatMapおよびflatMapLatest

個人的な理解:flatMap=マップ+マージ;flatMapLatest=マップ+ switchLatest

let disposeBag = DisposeBag()
        
struct Player {
    init(score: Int) {
        self.score = BehaviorSubject(value: score)
    }
    let score: BehaviorSubject<Int>
}

let A = Player(score: 80)
let B = Player(score: 90)

let player = BehaviorSubject(value: A)

player.asObservable()
    .flatMap { $0.score.asObservable() } // Change flatMap to flatMapLatest and observe change in printed output
    .subscribe(onNext: { print($0) })
    .disposed(by: disposeBag)

A.score.onNext(85)

player.onNext(B)

A.score.onNext(95) // Will be printed when using flatMap, but will not be printed when using flatMapLatest
B.score.onNext(100)
}

印刷

80
85
90
95
100

スキャン

初期シード値から開始し、Observableシーケンス各中間結果を要素Observableシーケンスとして返します。

image.png

let disposeBag = DisposeBag()
        
Observable.of(10, 100, 1000)
    .scan(1) { aggregateValue, newValue in
        aggregateValue + newValue
    }
    .subscribe(onNext: { print($0) })
    .disposed(by: disposeBag)

印刷

11
111
1111

おすすめ

転載: juejin.im/post/7117938639002140680