获取正在运行的聚合
假设你有一个热门的观察者,你很想保留它的数量。它可能是 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);