8
他の言語のストリーム/機能土地には、orElse()という共通の操作が1つあります。 ifは、ifのように機能し、現在のチェーンに結果が得られなかった場合は、代わりのものに変更されます。 Maybe型の言語では、基本的にはSome型のチェーンを続けるか、None型のorElseに変更します。RxJavaに相当するorElseとは
理想的な場合:
Observable.just(false)
.filter(value -> { return value; })
.map(value -> { return 1; })
.orElse(Observable.just(0));
Observable.<Boolean>error(new IllegalStateException("Just playing"))
.filter(value -> { return value; })
.map(value -> { return 1; })
.orElse(Observable.just(0));
それは現在、連結とtakeFirstを使用して再現することができますが、それは意味的に全く同じではありませんし、適切なエラー処理をカバーしていません。
Observable.concat(Observable.just(false)
.filter(value -> { return value; })
.map(value -> { return 1; }),
Observable.just(0))
.takeFirst();
エラーケースは処理されませんが、onErrorResumeNextまたはonErrorReturnが必要です。 –
こんにちは@ MLProgrammer-CiM。私はそれがエラーケースを処理する必要があります大丈夫だと思う私は、第1または第2観測からどのように捕捉するかの例を追加しました。 (btw、コーディングは私が思うと魔法ですか?) –
これは私のケースをカバーしていません。最初の観測可能なものが正しかったのではなく失敗したとしますが、switchIfEmptyルートを変更したいと思っています。なぜなら、orElseがやることだからです。 –