Scan操作符 中的错误
qhyuan opened this issue · 0 comments
qhyuan commented
Scan操作符会从第二项数据开始应用函数,当只有一个数据时不会应用函数。函数的第一个参数为第一项数据或上次函数的返回值,第二个参数为当前要处理的数据。
Observable<Integer> scan = Observable.just(1,2,3,4,5).scan(new Func2<Integer, Integer, Integer>(){
@Override
public Integer call(Integer t1, Integer t2) {
System.err.println("t1="+t1+"--t2="+t2);
return t2+2;
}
});
Subscriber subscriber = new Subscriber<T>(){
@Override
public void onStart() {
System.err.println("onStart: ");
}
@Override
public void onCompleted() {
System.err.println("Completed!");
}
@Override
public void onError(Throwable thrwbl) {
System.err.println("Error!"+thrwbl.getMessage());
}
@Override
public void onNext(T s) {
System.err.println("Item: " +s.getClass()+"="+ s);
}
};
scan.subscribe(subscriber);
输出:
onStart:
Item: class java.lang.Integer=1
t1=1--t2=2
Item: class java.lang.Integer=4
t1=4--t2=3
Item: class java.lang.Integer=5
t1=5--t2=4
Item: class java.lang.Integer=6
t1=6--t2=5
Item: class java.lang.Integer=7