rx-java2 - RxJava - 如何使用 Flowable 引用的类型中的方法?
问题描述
我有两个 Flowable,我通过压缩和过滤来操作它们,如下所示:
Flowable<Position> position1 = obj1.getPosition(); // position in 3D enviroment
Flowable<Position> position2 = obj2.getPosition();
position1.zipWith(position2, (pos1, pos2) ->
getDistance(pos1,pos2) //method returning distance between positions
).filter(distance->distance<=5).subscribe();
现在我想在类中使用方法Position
,当过滤的项目像这样发出时:
position1.zipWith(position2, (pos1, pos2) ->
getDistance(pos1,pos2) //method returning distance between positions
).filter(distance->distance<=5).subscribe(pos1.getX()-pos2.getX());
怎么做?
解决方案
解决这个问题的最简单方法是创建像这样的包装类
class Line {
Position first;
Position second;
Double distance;
}
并使用它转换您的 Rx 链
position1
.zipWith(position2, (pos1, pos2) -> {
double distance = getDistance(pos1,pos2);
return Line(pos1, pos2, distance);
})
.filter(line -> line.distance <= 5)
.subscribe(line.first.getX()-line.second.getX())
推荐阅读
- arrays - 在 fortran 2018 中编写类的最佳方式(代码审查)
- linux - 使用 valgrind 时在 _dl_start 的堆栈指针下方写入无效
- node.js - router.get 名字和姓氏
- base64 - 使用 Nifi 在 csv 文件中包含图像的 base64 代码
- vba - 在 Word VBA 中提取数学和希腊上标
- iterm2 - iterm2 .zshrc pront 中的三角符号出现问题
- chart.js - 使用 ChartJS 绘制带有平均线的堆叠水平条形图
- c# - 如何在不显示 SaveDialog 的提示的情况下将文件保存在特定位置
- sql - “对于每名受到总罚金超过 150 美元的球员,请找出球员编号和罚金总额。”
- tensorflow - Keras 训练的模型不在 CPU 上运行