作用
掃描,遍歷,用法和上一個(gè)Reduce
操作符差不多,只是這個(gè)操作符會(huì)將每一個(gè)過程的中間產(chǎn)物發(fā)射出來,而不是只發(fā)射結(jié)果
示例用法
這里舉個(gè)例子,做一下累加計(jì)算
Observable.just(1, 2, 3, 4,5)//創(chuàng)建了一個(gè)有5個(gè)數(shù)字的被觀察者
.scan(new BiFunction<Integer, Integer, Integer>() {
@Override
public Integer apply(Integer t1, Integer t2) {
return t1 + t2;//累加操作,如果是-就是累減操作。。依此類推
}
})
.subscribe(getObserver())//這里的觀察者依然不重要
這里前兩個(gè)數(shù)計(jì)算的結(jié)果會(huì)作為第二個(gè)計(jì)算的t1
傳進(jìn)來,直到處理完最后一次計(jì)算
運(yùn)行結(jié)果
1,3,6,10,15
分析
我們的被觀察者中有5個(gè)數(shù),分別是1,2,3,4,5
scan的過程:
第一個(gè)參數(shù)1不夠兩個(gè),直接發(fā)射結(jié)果1;
之后:
t1 = 1;t2 = 2
計(jì)算:t1 + t2 = 3,發(fā)射結(jié)果3;
t1 = 3;t2 = 3;
計(jì)算: t1 + t2 = 6,發(fā)射結(jié)果6;
t1 = 6;t2 = 4;
計(jì)算 :t1 + t2 = 10,發(fā)射結(jié)果10;
t1 = 10;t2 = 5;
計(jì)算 :t1 + t2 = 15,發(fā)射結(jié)果15;
結(jié)束
總結(jié)
這個(gè)系列只有干貨,如果大家有什么好的建議的話歡迎在下面評(píng)論。或者覺得我哪里寫的不夠形象了,同樣可以提出來。