Reactor 2.0.0.M1 を使用しており、Stream
. ブール演算の結果に応じて、いずれかのストリームを続行したいと考えています。これは関数で可能であるように見えますotherwise()
が、その使用方法は明確ではありません。
マイ ストリームは次のようになります。
stream.filter(o -> o.isValid());
が trueの場合を処理するには、ストリームを続行するためにo.isValid()
呼び出すだけでよいと理解しています。.map()
o.isValid()
が falseの場合を処理するために、代替.otherwise()
ストリームにアクセスできます。
しかし、or()
類似の方法はないようです。そのため、両方のストリームを完全に流動的な方法で構成することはできないようです。
私が思いつくことができる最高のものは、次のようなものです:
FilterAction<Object> filterAction = stream.filter(o -> o.isValid());
// Returns a 'true' Stream, which might additional operations
filterAction
.map(o -> trueOperation1(o))
.map(o -> trueOperation2(o));
// Returns a 'false' Stream, which might different additional operations
filterAction.otherwise()
.map(o -> falseOperation1(o))
.map(o -> falseOperation2(o));
それは本当に最善の方法ですか?