xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

Rx入門 (29) - メソッドの別名を提供するRx-Aliases

これまで全然気付いてなかったのですが、NuGet パッケージマネージャを眺めていたら Rx-Aliases というパッケージがあることに気付きました。約 1 年程前からリリースされているようですが、ダウンロード数が 500 に到達していないあたりメジャーでない感じですね。気になったので、インストールしてちょこっと試してみました。

NuGet - Rx-Aliases

NuGet パッケージ
PM> Install-Package Rx-Aliases

GitHub リポジトリ
System.Reactive.Observable.Aliases

提供されるメソッドの別名

少しばかり期待していたのですが、提供されるメソッドは以下の 3 つのみです。例えば射影であれば、.NET では LINQ のおかげで Select と呼びますが、他の言語では Map と言うのが一般的です。それに相当するものを提供したという感じですね。

既存名 別名
Select Map
Where Filter
SelectMany FlatMap

利用してみると以下のような感じになります。名前が違うこと以外は特筆すべきことはありません。既存メソッドと混ぜることもできますが、当然ながら混乱を招くだけなので止めましょう。個人的には完全に不要論を唱えたいです。

Observable.Range(1, 5)
    .Filter(x => x % 2 == 0)
    .Map(x => x * x)
    .FlatMap(x => Enumerable.Range(x, 3))
    .Subscribe(Console.WriteLine);

/*
4
5
6
16
17
18
*/

配置はアセンブリ参照ではなくファイルで

驚いたのが、アセンブリ参照として追加されるのではなく直接ファイルとして展開されることです。どうしてこれだけアセンブリ化されていないのかは謎です。

Solution Explorer