UniRx: Empty
Observable.Empty() は、Subscribe() するとすぐに完了を通知します。
using UniRx; using UnityEngine; public class Main : MonoBehaviour { void Start() { var s = Observable.Empty<Unit>(); s.Subscribe(e => Debug.Log("e: " + e), () => Debug.Log("OnCompleted")); } }
実行結果です。
OnCompleted
Observable.Empty を Take する
void Start() { var s = Observable.Empty<Unit>().Take(5); s.Subscribe(e => Debug.Log("e: " + e), () => Debug.Log("OnCompleted")); }
実行結果です。
OnCompleted
Take するときの不足分に対する挙動は、Linq の Take と同じですね。
Observable.Empty を Skip する
void Start() { var s = Observable.Empty<Unit>().Skip(5); s.Subscribe(e => Debug.Log("e: " + e), () => Debug.Log("OnCompleted")); }
実行結果です。
OnCompleted
Take と同様の振る舞いです。
Observable.Empty を First する
void Start() { var s = Observable.Empty<Unit>().First(); s.Subscribe(e => Debug.Log("e: " + e), () => Debug.Log("OnCompleted")); }
実行結果です。
InvalidOperationException: sequence is empty
シーケンスが空のため、InvalidOperationException 例外が生成されました。
Observable.Empty を FirstOrDefault する
void Start() { var s = Observable.Empty<int>().FirstOrDefault(); s.Subscribe(e => Debug.Log("e: " + e), () => Debug.Log("OnCompleted")); }
実行結果です。
e: 0 OnCompleted
default(int) が通知されます。