如何使用 Rx 观察下降沿?

Mar*_*hke 5 c# system.reactive

我有一个像这样的输入序列8, 7, 6, 5, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 4。结果应该显示的是0, 0

是的,这很容易。0, 0但当输入仅为 时,我不希望结果为0, 0

这里的问题是,它应该只0在前一个值大于零时才发布。

Lee*_*Lee 4

IObservable<int> source = new[] { 8, 7, 6, 5, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 4 }.ToObservable();
IObservable<int> edges = source.Zip(source.Skip(1), (f, s) => Tuple.Create(f, s))
    .Where(t => t.Item1 > 0 && t.Item2 == 0)
    .Select(t => t.Item2);
Run Code Online (Sandbox Code Playgroud)