【发布时间】:2012-11-21 15:09:26
【问题描述】:
我有一种感觉,这可能是一个非常简单的扩展方法,我错过了但我看不到它......
我基本上想采用一个流来产生一个流,其中值随着每个新值缓慢增加。我想节流/采样这个,不是按时间,而是按“容忍度”。例如
var ob = Enumerable.Range(0, 30).ToObservable(); // 0, 1, 2, 3, 4, 5,....., 30
var largeMovingOb = ob.WhenChangedBy(10); // 0, 10, 20, 30
当我有诸如 [1, 4, 20, 33] 之类的序列并且我想在值更改超过最后一个的 15 时输出 - 这将导致:[1, 20]。值 12 的变化将导致:[1, 20, 33]
是否有内置的 Rx 扩展?理想情况下,它适用于所有数字类型,而无需为每种类型编写重载。
【问题讨论】:
-
所以你想要一个仅在值变化超过 X 时触发的 Observable?
-
是的,但不仅来自源产生的最后一个值,还来自最后产生的值。请参阅下面对@jeroenh 的评论。
-
你知道你可以做
var ob = Observable.Range(0, 30);吗? -
感谢 Enigmativity。没想到这一点。
标签: c# .net c#-4.0 system.reactive