現在ストリーム内のオプションの入力を安全にアンラップするために、関数unwrapOptional
を作成しました。RxSwiftオプションの便利な機能をアンラップしますか?
func unwrapOptional<T>(x: Optional<T>) -> Observable<T> {
return x.map(Observable.just) ?? Observable.empty()
}
let aOpt: String? = "aOpt"
_ = Observable.of(aOpt).flatMap(unwrapOptional).subscribeNext { x in print(x)}
let aNil: String? = nil
_ = Observable.of(aNil).flatMap(unwrapOptional).subscribeNext { x in print(x)}
let a: String = "a"
_ = Observable.of(a).flatMap(unwrapOptional).subscribeNext { x in print(x)}
// output
aOpt
a
私がアーカイブにしたいことは代わりにflatMap(unwrapOptional)
を使用する便利な関数を作成することで、例えば
Observable.of(a).unwrapOptional()
...
extension ObservableType {
func unwrapOptional<O : ObservableConvertibleType>() -> RxSwift.Observable<O.E> {
return self.flatMap(unwrapOptional)
}
}
を私が実行しようとしましたが、それはコンパイルすることはありません何か
ありがとう、RxOptionalは良い選択です – LoGary