##UniRx: Take,TakeWhile,TakeUntilの違い
###+Take(int count)
Takeの場合
Observable.Timer (TimeSpan.FromSeconds (1), TimeSpan.FromSeconds (1))
.Take (2)
.Subscribe (x => Debug.Log (x), () => Debug.Log ("end"));
Takeは何回データを流すか
を決めるための関数。
int型の引数で何回
を指定できる
Takeに指定した数がSubscribeまで流れ終わった瞬間にストリームが終了しOnComlateが流れる。
###+TakeUntil(T,TOther)
TakeUntilの場合
Observable.Timer (TimeSpan.FromSeconds (1), TimeSpan.FromSeconds (1))
.TakeUntil (this.UpdateAsObservable ().Where (_ => Input.GetMouseButton (0)))
.Subscribe (x => Debug.Log (x), () => Debug.Log ("end"));
TakeUntilはどのストリームAにデータが流れるまで、このストリームBにデータを流すか
を決めるための関数。
引数に別のストリームを指定することでいつまで
を指定できる
引数に渡したストリームAにOnNextが呼ばれた時に、こののストリームBが終了しOnCompleteが呼ばれる。
###+TakeWhile(Func)
TakeWhileの場合
Observable.Timer (TimeSpan.FromSeconds (1), TimeSpan.FromSeconds (1))
.TakeWhile (count => count < 2)
.Subscribe (x => Debug.Log (x), () => Debug.Log ("end"));
TakeWhileはいつまでデータを流すか
を決めるための関数。
Func型の引数でストリームに流れたデータに対し、通過させるべきかどうか
を指定できる。
TakeWhileにfalseを返した時点でストリームが終了しOnComlateが流れる。
##内容に間違い等がありましたらコメントください><