🐈

RxJava2で一つ前の値を参照したい

2021/07/28に公開

RxJava2 でコードを書いていると、1つ前の値が欲しいんだけどな〜と思う時がよくあります。
こうした時、例えば対象の Stream とその Stream に skip(1) した Stream を zip で合成すれば良いじゃないか!と思うかもしれません。しかし、この実装では2つ目の値が流れてくるまで値を取り出すことができません。
もうちょっとうまいことできないかな?ということで作ってみたのがこんなコードです。

  • scanfilter で要素数が 1 or 2 の List を生成
  • List から一つ前の値と現在の値の両方を持つ Change に変換

ということをしています。
こんな感じで1つ目の値が流れてきた時でも値を取り出すことのできる Stream を生成することができます。

Discussion