ひよっこゲームブログ

なにもかも初心者のひよっこがゆったりと何かする

リアクティブプログラミング8日目

今日もRxJava

型変換

ソースやサービスがそこで動作するフローと異なる型を返すことがある

解決手段は2通りあって

1. 目的の型へ変換する
2. 異なる型をサポートする特定の演算子を使う

まぁなんかここははリファレンスを参照としか言いようがない・・・

各使い分け
FlowableはバックプレッシャーがついてるObservableなので説明省く

名前 説明
Observable 値が複数
Single 値が1つ
Maybe 値が1つ or なし
Completable 値なし


目的の型へ変換

RxJavaでは変換を実行して他の型へ一致させる演算子がデフォルトで実装されてる
表は利用可能な変換オプション一覧

Flowable Observable Single Maybe Completable
Flowable toObservable first, firstOrError, single, singleOrError, last, lastOrError(※1) firstElement, singleElement, lastElement ignoreElements
Observable toFlowable(※2) first, firstOrError, single, singleOrError, last, lastOrError(※1) firstElement, singleElement, lastElement ignoreElements
Single toFlowable(※3) toObservable toMaybe ignoreElements
Maybe toFlowable(※3) toObservable toSingle ignoreElements
Completable toFlowable toObservable toSingle toMaybe

※1 multi-valuedをsingle-valuedにする場合は、どの値を結果として返すか考える必要がある
※2 場合によって振る舞いを変更する必要性があるらしい
※3 ソースアイテムが1つの場合はバックプレッシャーを気にする必要はない


Overloadの利用

別の型へ変換してくれるOverloadなやつら

Operator Overloads
flatMap flatMapSingle, flatMapMaybe, flatMapCompletable, flatMapIterable
concatMap concatMapSingle, concatMapMaybe, concatMapCompletable, concatMapIterable
switchMap switchMapSingle, switchMapMaybe, switchMapCompletable


場合によって使い分けていけって感じだけど、そこそこ分かりやすい。ふむふむ
ここんとこ夜更かしばっかでよくなーい、寝る