過去記事インデックス
- Reactive Extensions再入門 その1
- Reactive Extensions再入門 その2「IObservableインターフェースとIObserverインターフェース」
- Reactive Extensions再入門 その3「IObservableのファクトリメソッド」
- Reactive Extensions再入門 その4「Timer系のファクトリメソッド」
- Reactive Extensions再入門 その5「HotとCold」
- Reactive Extensions再入門 その6「HotなIObservableを作成するファクトリ」
- Reactive Extensions再入門 その7「LINQスタイルの拡張メソッド」
- Reactive Extensions再入門 その8「SkipとTakeメソッド」
- Reactive Extensions再入門 その9「Skip + Take + Repeat = ドラッグ」
- Reactive Extensions再入門 その10「Doメソッド」
- Reactive Extensions再入門 その11「Catchメソッド」
- Reactive Extensions再入門 その12「Finallyメソッドとリソース解放」
- Reactive Extensions再入門 その13「最後の値を取得するLatestとMostRecentメソッド」
- Reactive Extensions再入門 その14「Nextメソッド」
- Reactive Extensions再入門 その15「To*****系メソッド」
- Reactive Extensions再入門 その16「最大、最少、平均を求めるメソッド」
- Reactive Extensions再入門 その17「集計するメソッド」
- Reactive Extensions再入門 その18「CountメソッドとLongCountメソッド」
- Reactive Extensions再入門 その19「AnyメソッドとAllメソッド」
- Reactive Extensions再入門 その20「GroupByメソッドでグルーピングしてみよう」
- Reactive Extensions再入門 その21「GroupByUntilメソッド」
- Reactive Extensions再入門 その22「単一の値を取得するメソッド」
- Reactive Extensions再入門 その23「重複を排除するメソッド」
- Reactive Extensions再入門 その24「単一の値を取得するメソッド その2」
- Reactive Extensions再入門 その25「値をまとめるBufferメソッド」
- Reactive Extensions再入門 その26「値をまとめるWindowメソッド」
- Reactive Extensions再入門 その27「時間でフィルタリング?Sampleメソッド」
- Reactive Extensions再入門 その28「落ち着いたら流すThrottleメソッド」
- Reactive Extensions再入門 その29「値を指定した時間だけ遅延させるDelayメソッド」
- Reactive Extensions再入門 その30「もう待ちきれない!を表現するTimeoutメソッド」
- Reactive Extensions再入門 その31「時間に関する情報を付与するTimestampとTimeIntervalメソッド」
- Reactive Extensions再入門 その32「型変換を行うCastとOfTypeメソッド」
はじめに
今回は、はるか昔「その8」や「その9」で紹介したSkipとTake系のメソッドの仲間のSkipLastとTakeLastについて紹介します。何故、前にやらなかったかというと忘れてましたはい。
SkipLastとTakeLastメソッド
ここでは、SkipLastメソッドとTakeLastメソッドについて説明します。SkipLastメソッドとTakeLastメソッドは名前が示す通りIObservable
public static IObservable<T> SkipLast<T>(this IObservable<T> source, int count); public static IObservable<T> TakeLast<T>(this IObservable<T> source, int count);
SkipLastメソッドの使用例を下記に示します。
Observable // 1〜10の値を発行する .Range(1, 10) // 最後3つをSkip .SkipLast(3) // 購読して表示 .Subscribe( i => Console.WriteLine("OnNext({0})", i), () => Console.WriteLine("OnCompleted()"));
このコードは、1〜10の値を発行して最後の3つの値をSkipしています。実行結果を以下に示します。8,9,10の最後の3つの値が表示されていないことが確認できます。
OnNext(1) OnNext(2) OnNext(3) OnNext(4) OnNext(5) OnNext(6) OnNext(7) OnCompleted()
次にTakeLastメソッドの使用例を下記に示します。
Observable // 1〜10の値を発行する .Range(1, 10) // 最後3つをTake .TakeLast(3) // 購読して表示 .Subscribe( i => Console.WriteLine("OnNext({0})", i), () => Console.WriteLine("OnCompleted()"));
このコードは、1〜10の値を発行して最後の3つを拾っています。実行結果を以下に示します。SkipLastの例では飛ばされていた8,9,10が表示されていることが確認できます。
OnNext(8) OnNext(9) OnNext(10) OnCompleted()|
このように、SkipLastメソッドとTakeLastメソッドを使うことでIObservable