Avatar
RxSwiftに compactMap の概念を入れると便利になると思うんですがどうでしょう stream.flatMap { x -> Observable<Foo> in guard x.isValid else { return .error(SomeError()) } guard x.isOnCertainCondition else { return .empty() } return .just(x.foo()) } optionalStream .flatMap(Observable.from(optional:)) いちいちObservableを通すのはソリューションとしてデカすぎると思うんですよね こんなふうに書きたい stream.compactMap { x -> Foo? in guard x.isValid else { throw SomeError() } guard x.isOnCertainCondition else { return nil } return x.foo() } optionalStream .compactMap { $0 } (edited)