平均值

計算 Observable 發射數值的平均值,並發射此平均值

Average 運算子操作一個發射數值(或可以評估為數值的項目)的 Observable,並發射一個單一的值:來源 Observable 發射的所有數值的平均值。

另請參閱

特定語言資訊

待定

待定

在 RxGroovy 中,此運算子不在 ReactiveX 核心中,而是獨立的 rxjava-math 模組的一部分,它使用四個特定型別的運算子實作:averageDoubleaverageFloataverageIntegeraverageLong。以下範例展示這些運算子如何運作

範例程式碼

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
average

您也可以對每個項目套用函式後的結果取平均值,如上圖所示,它發射來源 Observable 發射的圖形邊數的平均值。

如果來源 Observable 沒有發射任何項目,此運算子會因 IllegalArgumentException 而失敗。

此運算子不在 RxJava 核心中,而是獨立的 rxjava-math 模組的一部分,它使用四個特定型別的運算子實作:averageDoubleaverageFloataverageIntegeraverageLong

average

您也可以對每個項目套用函式後的結果取平均值,如上圖所示,它發射來源 Observable 發射的圖形邊數的平均值。

如果來源 Observable 沒有發射任何項目,此運算子會因 IllegalArgumentException 而失敗。

average

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
average

您也可以對每個項目套用函式後的結果取平均值,如上圖所示,它發射來源 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!
    

待定

待定

待定