AsUnitObservable
1. 概要
AsUnitObservable は、上流から流れてくる値を すべて Unit に変換 するオペレーターです。
値の中身には興味がなく、「イベントが発生したこと」だけを伝えたい場合に使用します。概念的には Select(_ => Unit.Default) と同等ですが、R3 の内部実装ではソースが既に Observable<Unit> の場合はそのまま返すなどの最適化が施されています。
2. シグネチャ
値を Unit に変換する
csharp
public static Observable<Unit> AsUnitObservable<T>(this Observable<T> source)上流のすべての値を Unit に変換して下流へ流します。完了通知とエラー通知はそのまま伝搬されます。
csharp
source.AsUnitObservable()3. マーブルダイアグラム
上流から 1、2、3 が流れた場合、すべて Unit に変換され、下流には () が 3 回流れます。タイミングと要素数は上流と同じです。
4. サンプルコード
csharp
using R3;
// ボタンクリックなど、値の中身に興味がないケース
var clicks = Observable.Range(1, 3);
clicks.AsUnitObservable()
.Subscribe(_ => Console.WriteLine("イベント発生"));
// 出力:
// イベント発生
// イベント発生
// イベント発生5. 補足
Select(_ => Unit.Default)でも同じ結果が得られますが、AsUnitObservableのほうがソースが既にObservable<Unit>の場合に不要なラップを避ける最適化があるため、推奨されます。