gpt4 book ai didi

c# - 如何将 IObservable> 转换为 IObservable>?

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:16 25 4
gpt4 key购买 nike

我有一个鼠标左键状态流:

var leftMouseButton = mouse.Select(x => x.LeftButton).DistinctUntilChanged();

然后我Window这给我一个 observable of observables 表示鼠标拖动:

var leftMouseDrag = mouse
.Select(mouseState => new Point(mouseState.X, mouseState.Y))
.DistinctUntilChanged()
.Window(leftMouseButton.Where(x => x == ButtonState.Pressed), x => leftMouseButton.Where(y => y != x));

现在我想制作一个关于 leftMouseDrag 的流给出点列表。每次用户完成拖动(LMB 向下 -> 移动 -> LMB 向上)时,它应该触发鼠标移动经过的位置列表。

我如何获取 IObservable<IObservable<Point>>并将其变成 IObservable<IEnumerable<Point>>

最佳答案

更改您的 Window接线员到 Buffer运算符 ( this overload).

运算符生成 IObservable<IList<T>> , 其中IList属于 IEnumerable


基于 OP 评论的替代解决方案:

var leftMouseDragLists = leftMouseDrag.SelectMany(i => i.ToList());

关于c# - 如何将 IObservable<IObservable<T>> 转换为 IObservable<IEnumerable<T>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38181696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com