過去記事インデックス
- 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メソッド」
はじめに
記事の終わりを見据えるためにObservableクラスに定義されている拡張メソッドを列挙して、なんとなく説明のようなものを書いてみました。趣旨としては、以前id:neueccさんが行われていたReactive Extensions入門 + メソッド早見解説表と同じです。あと、現状での理解をなんとなく書いてるだけなので内容が間違ってる可能性もある上に、カテゴライズは適当です。
ファクトリ
- Create Method : IObserver
を使ってIO を作る。割と汎用的。 - Defer(TValue) Method : IO
を返すデリゲートを使ってIO を作る。 - Empty Method : 空のIO
を作る - FromAsyncPattern Method : Begin***, End***からIO
を作る。 - FromEvent Method : .NETのイベントからIO
を作る - FromEventPattern Method : .NETのイベントからIO
>を作る - Generate Method : for文で値を生成するイメージ。
- Never(TResult) Method : 終わらないIO
を作る - Range Method : 指定した範囲の値のIO
を返す - Return Method : 指定した値を返すIO
を返す - Start Method : IO
を開始 - Timer Method : 一定間隔で値を発行するIO
を返す - Using(TSource, TResource) Method : IDisposableを使ってIO
を作成する - Throw Method : 例外を発生させる
- ToAsync Method : DelegateからFunc
>を作成する
変換
- Buffer Method : 指定した数 or 時間 or 任意のタイミングの間値をためる
- Cast(TResult) Method : 文字通りcast
- DefaultIfEmpty Method : 空ならデフォルト値を返す
- Dematerialize(TSource) Method : IO
>からIO への変換 - Materialize(TSource) Method : IO
からIO >への変換 - RefCount(TSource) Method : IConnectableObservable
を参照カウンタで管理してくれる。 - Select Method : 変換(射影かな)
- Single Method : 最初の値(無い場合は例外)
- SingleOrDefault Method : 最初の値(無い場合はデフォルト値)
- ToObservable Method : IO
-> IO への変換? - Switch(TSource) Method : IO
> -> IO への変換 - Window Method : 指定した数にまとめる
IOから何かへの変換
- ToArray(TSource) Method : IO
からT[]へ変換 - ToDictionary Method : IO
からIDictionary への変換 - ToEnumerable(TSource) Method : IO
からIE への変換 - ToEvent Method : IO
からIEventSource への変換(OnNextイベントを持つオブジェクト) - ToEventPattern(TEventArgs) Method : IO
>からIEventPatternSource への変換 - ToList(TSource) Method : IO
からIO >への変換 - ToLookup Method : IO
からIO >への変換
フィルタリング
- Distinct Method : 一度出た値は通過させない
- DistinctUntilChanged Method : 前の値と変わらない間は通過させない
- OfType(TResult) Method : 型でフィルタリングする
- Sample Method : 指定した間隔で最後に通過した値を返す
- Where Method : 条件にあうものだけを通過させる
合成
- Amb Method :一番最初に通知があったものを返す
- CombineLatest(TFirst, TSecond, TResult) Method : 最後の値をキャッシュして何かしらに変更があったときに再評価的な感じ
- Concat Method : 繋げる
- Merge Method : マージ(統合)
- SelectMany Method : IO
-> IO - Zip Method : 2つのIO
を待ち合わせて後続へ流す
集計
- Aggregate Method : いろんな集計
- Average Method : 平均
- Count(TSource) Method : 数える
- GroupBy Method : グループ単位にまとめる
- GroupByUntil Method : グループ単位にまとめる
- LongCount(TSource) Method : 超長い奴数える
- Max Method : 最大値
- MaxBy Method : 最大値
- Min Method : 最小値
- MinBy Method : 最小値
- Scan Method : いろんな集計(途中経過込み)
- Sum Method : 合計
Hot<->Cold変換
- Multicast Method : Cold -> Hot (ISubject
) - Publish Method : Cold -> Hot
- PublishLast Method : Cold -> Hot 最後の要素だけ返す
その他
- All(TSource) Method : 全部trueか
- Any Method : どれかがtrueか
- AsObservable(TSource) Method : subject系からIO
へ変換するのにつかわれる - Contains Method : 存在確認
- Do Method : 副作用
- ElementAt(TSource) Method : 指定した場所の要素を取得
- ElementAtOrDefault(TSource) Method : 指定した場所の要素を取得 or デフォルト値
- First Method : 最初の要素の取得。
- FirstOrDefault Method : 最初の要素の取得 or デフォルト値
- ForEach(TSource) Method : for文
- GetEnumerator(TSource) Method : IO
からIE への変換 - IgnoreElements(TSource) Method : IO
をすべて無視る - Last Method : 最後の値を返す
- LastOrDefault Method : 最後の値を返す or default
- Repeat Method : IO
を繰り返す - Replay Method : IO
を一時的にブロック。Connect後に全てをReplayする。 - SequenceEqual Method : IO
とIO が等しいか - StartWith Method : IO
を引数で渡した値を最初に発行した後に続けて実行みたいな感じ。
IEnumerableへの変換
- Latest(TSource) Method : 最後に発行された値を返すIEnumerable
を返す。MoveNextで値の発行を待つのが特徴。 - MostRecent(TSource) Method : 最後に発行された値を返すIEnumerable
を返す。MoveNextで値が発行されていなくてもキャッシュを返すのが特徴。 - Next(TSource) Method : 次の値を返すIEnumerable
を返す。MoveNextで値の発行を待つのが特徴。
時間系
- Delay Method : 遅延させる
- Interval Method : 指定した時間間隔で値を発行するIO
にする - Throttle Method : 指定時間値が通過しなかったら最後の値を通過させる
- TimeInterval Method : TimeInterval
へ変換。値と、前の値が発行されてからの間隔をTimeSpanとしてつけてくれる。 - Timeout Method : 指定した時間値が来ないと例外
- Timestamp Method : IO
からTimestamped へ変換。値と値が発行された時間がとれる。
エラー処理系
- Catch Method : 例外時の処理を行う
- Finally(TSource) Method : IO
シーケンスの終わりに必ず実行される処理 - OnErrorResumeNext Method : エラーが発生したときに次のIO
を返す - Retry Method : エラー時に再度やりなおす
スレッド系
- ObserveOn Method : 後続の実行スレッドを切り替える
- SubscribeOn Method : 後続のメソッドの実行スレッドを切り替える?正直よくわからん。
- Synchronize Method : 非同期に値が流れてきたものを同期的にする
飛ばす & 通過系
- Skip(TSource) Method : 指定した数だけ飛ばす
- SkipLast(TSource) Method : 飛ばした最後
- SkipUntil(TSource, TOther) Method : IO
のOnNextまで飛ばす - SkipWhile Method : trueの間飛ばす
- Take(TSource) Method : 指定した数だけ通過させる
- TakeLast(TSource) Method : 最後だけ通過させる
- TakeUntil(TSource, TOther) Method : IO
のOnNextまで通過させる - TakeWhile Method : trueの間通過させる
購読
- Subscribe Method : 購読
使い方がよくわからない系
- And(TLeft, TRight) Method
- GroupJoin(TLeft, TRight, TLeftDuration, TRightDuration, TResult) Method : 外部結合的なイメージ?
- Join(TLeft, TRight, TLeftDuration, TRightDuration, TResult) Method : 内部結合?
- When Method : Join系とあわせてつかう?
- Then(TSource, TResult) Method : Whenと合わせて使う?
書いてみて
Joinとかそこらへんがよくわからない。ちょっと調べてみようかなぁ。