【问题标题】:RxJava - how to use methods from type referenced by Flowable?RxJava - 如何使用 Flowable 引用的类型中的方法?
【发布时间】:2020-05-20 18:15:28
【问题描述】:

我有两个 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());

怎么做?

【问题讨论】:

    标签: rx-java2


    【解决方案1】:

    解决这个问题的最简单方法是创建这样的包装类

    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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多