かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

前後の値を利用するって色々やり方あるのね・・・

id:neueccさんのBlogに書いてあった、値のペアを作る方法。Scanの存在と挙動は知ってたけどこういう風に使えるか!っていうのは思いつかなかった。こういうノウハウ少しずつためていかないとだな〜。備忘のため自分のBlogにもメモメモ。イディオムが今一番つまってるのってRxのフォーラムなのかなぁ。Rxx(Extensions for Reactive Extensions)のソースを読むのもありかな?

var array = new[] {0,1,2,3,4,5,6,7,8,9};
array.ToObservable()
    .Scan(new 
    {
        OldValue = 0, 
        NewValue = 0
    },
    (x, y) => new 
    { 
        OldValue = x.NewValue, 
        NewValue = y 
    })
    .Skip(1)
    .Subscribe(Console.WriteLine);