RxSwiftでObservable<Void>をonNext()する方法

2018-01-14 14:26  -  1 min read

もしかしたらRx本来の使い方から逸れているかもしれませんが,引数のいらない連続したイベントを通知するのにも, Rxは便利ですよね。

そこで Observable<Void> ,あるいは PublishSubject<Void> というようなObservableを定義したことがある方も多くいるのではないでしょうか。

ただ,このVoidが流れるObservableは,onNext() あるいは onNext(Void)という形でVoidを送り込んでやろうとすると,引数を与えてやれという旨のエラーが発生します。

そんなときは onNext(()) としてやると良いです。これは値の入ってない空のTupleを与えてあげていることになりますが,これで通るようになります。

いっそのこと,Void型を取るObservableには,引数を必要としないようなExtensionを定義するとより直感的になりますね。

extension ObserverType where E == Void {
    public func onNext() {
        onNext(())
    }
}