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

もしかしたら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(())
    }
}