🐈
RxJava2で一つ前の値を参照したい
RxJava2 でコードを書いていると、1つ前の値が欲しいんだけどな〜と思う時がよくあります。
こうした時、例えば対象の Stream とその Stream に skip(1)
した Stream を zip
で合成すれば良いじゃないか!と思うかもしれません。しかし、この実装では2つ目の値が流れてくるまで値を取り出すことができません。
もうちょっとうまいことできないかな?ということで作ってみたのがこんなコードです。
-
scan
とfilter
で要素数が 1 or 2 のList
を生成 -
List
から一つ前の値と現在の値の両方を持つChange
に変換
ということをしています。
こんな感じで1つ目の値が流れてきた時でも値を取り出すことのできる Stream を生成することができます。
Discussion