獲取正在執行的聚合

假設你有一個熱門的觀察者,你很想保留它的數量。它可能是 IObservable<StockTick>,你想要保持平均交易量的計數。你可以使用 Scan

var tradeVolume = stockTicks.Select(e => e.Price)
    .Scan(0.0m, (aggregated, newtick) => aggregated + newtick)
    .Select((aggregated, index) => aggregated / (index + 1))

現在你可以簡單地訂閱你的交易量,該交易量在收到每個新的 Tick 時實時更新。

var subscription = tradeVolume.Subscribe(vol => Console.WriteLine("New trade volume is {0}", vol);