Average 運算子操作一個發射數值(或可以評估為數值的項目)的 Observable,並發射一個單一的值:來源 Observable 發射的所有數值的平均值。
待定
在 RxGroovy 中,此運算子不在 ReactiveX 核心中,而是獨立的 rxjava-math
模組的一部分,它使用四個特定型別的運算子實作:averageDouble
、averageFloat
、averageInteger
和 averageLong
。以下範例展示這些運算子如何運作
def myObservable = Observable.create({ aSubscriber -> if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext(4); if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext(3); if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext(2); if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext(1); if(false == aSubscriber.isUnsubscribed()) aSubscriber.onCompleted(); }); Observable.averageInteger(myObservable).subscribe( { println(it); }, // onNext { println("Error encountered"); }, // onError { println("Sequence complete"); } // onCompleted );
2 Sequence complete
您也可以對每個項目套用函式後的結果取平均值,如上圖所示,它發射來源 Observable 發射的圖形邊數的平均值。
如果來源 Observable 沒有發射任何項目,此運算子會因 IllegalArgumentException
而失敗。
此運算子不在 RxJava 核心中,而是獨立的 rxjava-math
模組的一部分,它使用四個特定型別的運算子實作:averageDouble
、averageFloat
、averageInteger
和 averageLong
。
您也可以對每個項目套用函式後的結果取平均值,如上圖所示,它發射來源 Observable 發射的圖形邊數的平均值。
如果來源 Observable 沒有發射任何項目,此運算子會因 IllegalArgumentException
而失敗。
RxJS 將此運算子實作為 average
。以下程式碼範例展示如何使用它
var source = Rx.Observable.range(0, 9).average(); var subscription = source.subscribe( function (x) { console.log('Next: ' + x); }, function (err) { console.log('Error: ' + err); }, function () { console.log('Completed'); });
Next: 4 Completed
您也可以對每個項目套用函式後的結果取平均值,如上圖所示,它發射來源 Observable 發射的圖形邊數的平均值。
var arr = [ { value: 1 }, { value: 2 }, { value: 3 } ]; var source = Rx.Observable.fromArray(arr).average(function (x) { return x.value; }); var subscription = source.subscribe( function (x) { console.log('Next: ' + x); }, function (err) { console.log('Error: ' + err); }, function () { console.log('Completed'); });
Next: 2 Completed
average
可以在下列發行版本中找到
rx.all.js
rx.all.compat.js
rx.aggregates.js
它需要下列其中一個
rx.js
rx.compat.js
rx.lite.js
rx.lite.compat.js
RxPHP 將此運算子實作為 average
。
計算可觀察數值序列的平均值。
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/average/average.php $source = Rx\Observable::range(0, 9)->average(); $subscription = $source->subscribe($stdoutObserver);
Next value: 4 Complete!
待定
待定
待定