这个方法怎么写?
public static IObservable<T> IncreasingSubsequence<T>(this IObservable<T> observable, IComparer<T> comparer)
{
// ???
}
产生的可观察值应该仅推送那些超过所有先前值的最大值的值。
最佳答案
另一种方法是使用 Scan 和 DistinctUnitChanged。为简单起见,这里有一个使用 int 的例子
IObservable<int> xs;
xs.Scan((last,cur) => cur > last ? cur : last).DistinctUntilChanged()
和更一般的形式
public static IObservable<T> IncreasingSubsequence<T>(this IObservable<T> xs, IComparer<T> comp)
{
return xs.Scan((last,cur) => comp.Compare(cur, last) == 1 ? cur : last)
.DistinctUntilChanged();
}
关于c# - 如何从 IObservable<T> 选择递增的值子序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6644073/