- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 RxCPP,但很难理解它的行为。
这里有两个程序,一个在 Rx.Net 中,另一个在 RxCPP 中。他们应该输出相同的打印件,但实际上并没有。
该程序从鼠标流中获取点,并计算点之间的增量流。
鼠标是点流的流,每个笔划 - 从下往上按是一股流。鼠标一个接一个地给出这样的流。
在这些测试中,预期的输出是:
0 号增量为:0,0
Delta 1 是:5,0
Delta 2 为:0,5
三角洲 3 号是:2,3
这就是 Rx.Net 输出的内容。
Rx.Cpp 仅输出第一行:Delta no 0 is: 0,0
有什么想法吗?
Rx.Cpp 示例:
#include <rx.hpp>
namespace rx = rxcpp;
namespace rxsub = rxcpp::subjects;
using rxob = rx::observable<>;
struct Point
{
Point(int x, int y) : x(x), y(y) {}
int x = 0, y = 0;
Point operator-() const { return {-x, -y}; }
Point operator+(const Point& other) const { return Point{x + other.x, y + other.y}; }
Point operator-(const Point& other) const { return operator+(-other); }
};
std::ostream& operator<<(std::ostream& o, const Point& p)
{
return o << "(" << p.x << ", " << p.y << ")";
}
void TestRxCPP()
{
using RxPoint = rx::observable<Point>;
using Strokes = rx::observable<RxPoint>;
using StrokesSubject = rxsub::subject<RxPoint>;
StrokesSubject mouseSource;
auto strokes = mouseSource.get_observable();
auto deltaVectors = [](Strokes strokes) {
auto deltas = strokes.flat_map([=](RxPoint stroke) {
auto points = stroke;
// create stream of delta vectors from start point
auto firstPoint = points.take(1);
auto delta =
points.combine_latest([](Point v0, Point v1) { return v0 - v1; }, firstPoint);
return delta;
});
return deltas;
};
auto delta = deltaVectors(strokes);
int n = 0;
delta.subscribe(
[&](const Point& d) { std::cout << "Delta no. " << n++ << " is: " << d << std::endl; });
auto testMouse = rxob::from(Point{3 + 0, 4 + 0}, Point{3 + 5, 4 + 0}, Point{3 + 0, 4 + 5}, Point{3 + 2, 4 + 3});
mouseSource.get_subscriber().on_next(testMouse);
}
Rx.Net 示例:
void RxNET()
{
var strokesS = new Subject<IObservable<Point>>();
Func<IObservable<IObservable<Point>>, IObservable<Point>>
deltaVectors = strokes =>
{
var deltas = strokes.SelectMany(stroke =>
{
var points = stroke;
// create stream of delta vectors from start point
var firstPoint = points.Take(1);
var deltaP =
points.CombineLatest(firstPoint, (v0, v1) => new Point(v0.X - v1.X, v0.Y - v1.Y));
return deltaP;
});
return deltas;
};
var delta = deltaVectors(strokesS);
var n = 0;
delta.Subscribe(d => { Console.WriteLine($"Delta no {n++} is: {d}\n"); });
var testMouse = new List<Point>
{
new Point(3 + 0, 4 + 0),
new Point(3 + 5, 4 + 0),
new Point(3 + 0, 4 + 5),
new Point(3 + 2, 4 + 3)
}.ToObservable();
strokesS.OnNext(testMouse);
}
最佳答案
Thanks to @Kirk Shoop at the rxcpp github :-)
这是 HOTvCOLD 行为。
这些笔画是冷的并且正在共享并且只使用一个线程。 points.combine_latest(..., firstPoint)
意味着在订阅 firstPoint
之前发送所有点。因此只有最后一个增量被发出。
如果您反转 combine_latest
auto delta =
firstPoint.combine_latest([](Point v0, Point v1) { return v1 - v0; }, points);
关于c++ - RxCPP 的行为不同于 Rx.Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45662139/
我用 Cocoapods 创建了一个简单的项目并安装了 RxSwift 和 RxCocoa。 我写了这段代码: import UIKit import RxSwift class ViewContro
我对 Rx 真的很陌生,只是想知道 subscribeOn 的顺序如何影响 Observable //This will not print anything Observable.just("wha
我有一个 PublishSubject 每 X 秒发出一个信号,我想只考虑 Y 秒后发出的第一个项目。 例子 observable A 每秒发出一次“滴答声” observable B 应该每 5 秒
我有以下流。 Observable.just(Unit) // execute immediately .mergeWith(tryAgainRelay) // execute again w
我可以看到 RX 适用于 Android 和 UI 事件处理。我很难看到 RX 在后端提供了什么好处。 RX Java 是为后端处理而设计的,还是这个概念太过分了? 最佳答案 实际上,RxJava 最
我有一个关于什么是更好的 RxJava 模式以保持可观察状态的问题。 为简单起见,假设我们有一个 StateManager需要跟踪系统中某个状态(假设它是一个简单的 bool 标志)并以可观察的方式公
我遇到了以下问题。我有一个从具有 isMember 属性的服务器请求的基本对象。如果该属性为 true,我想向端点 1、2 和 3 发出请求。 如果该属性为 false,我只想向端点 1 发出请求。
我正在使用 RxJava,但也许能够翻译另一个实现的答案。 我有一个 Observable 发出一系列项目,我想将它们分成 10 组。如下所示: observable .buffer(10)
有没有办法计算 RxAndroid 中流中已处理的元素数量? 我有类似的事情: Observable.fromArray(new String[]{"these", "are", "my", "val
如果我的客户端断开连接(错误)超过 10 秒,我会尝试显示一个弹出窗口。但是,当重新连接时,我也会关闭弹出窗口(true)。如果为真,我需要立即关闭弹出窗口。 我认为我需要做的是根据值(假)进行去抖,
收到 onNext() 后如何自动退订? 现在我使用这个代码: rxObservable .compose(bindToLifecycle()) // unsubscribe automaticall
我在 Ettus x310 上有一个简单的 C++ 测试程序,以前可以用,但现在不行了。我试图简单地设置单个 USRP 的两个 channel 的两个中心频率。当我尝试在第二个 channel 上设置
我有一个返回 Observable 的网络调用,我有另一个网络调用,它不是依赖于第一个 Observable 的 rx,我需要以某种方式转换这一切都与 Rx 相关。 Observable respon
我正在尝试根据 Rxjava 中的某些条件创建组列表。 以下是我的回复: { "dates":[ { "date":18, "value":
RX 6800 XT是最近很强的一款显卡,让很多的用户都很喜爱,详细还有很多没有入手的用户对他不是很了解吧,下面就带来了RX 6800 XT评测、跑分、价格、参数、图片,快来一起看看吧。 RX
我有一个重复元素列表,比如: Observable source = Observable.just("A", "B", "A", "C", "C", "A"); 我想按它们的值以及它们出现的次数对它
如果我将 RX-main 包添加到 WPF 应用程序,我会安装以下依赖包: 接收接口(interface) 接收核心 Rx-Linq Rx 平台服务 主要接收 添加 Rx-main 后,可以安装两个与
com.myapp.test.debug E/MessageQueue-JNI:rx.exceptions.OnErrorNotImplementedException 在 rx.Observable
这个问题在这里已经有了答案: RxJava operator that emits if different from last (1 个回答) 关闭 5 年前。 我有一个 bool 型 Obser
首先,我在两个 shell 中同时运行 vnstat -tr -i eth0 和 iftop。奇怪的是,vnstat 中的 rx 比 iftop 中的峰值 rx 大得多。我该如何解决这个问题? vns
我是一名优秀的程序员,十分优秀!