Spec-Zone.ru › ReactiveX

Среднее значение

вычисляет среднее значение чисел, испускаемых наблюдаемым объектом, и испускает это среднее значение
Открыть интерактивную диаграмму на rxmarbles.com

Оператор Среднее значение работает с наблюдаемым объектом, который испускает числа (или элементы, которые могут быть оценены как числа), и испускает одно значение: среднее значение всех чисел, испускаемых исходным наблюдаемым объектом.

См. также

  • Сумма
  • Введение в Rx: Минимум, максимум, сумма и среднее значение
  • RxMarbles: average

Информация, специфичная для языка

RxGroovy averageDouble averageFloat averageInteger averageLong

В 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
average

Вы также можете вычислить среднее значение не самих элементов, а результатов применения функции к каждому элементу, как показано на иллюстрации выше, которая испускает среднее число сторон фигур, испускаемых исходным наблюдаемым объектом.

Этот оператор завершится с ошибкой IllegalArgumentException , если исходный наблюдаемый объект не испустит ни одного элемента.

RxJava 1․x averageDouble averageFloat averageInteger averageLong

Этот оператор не входит в ядро RxJava, но является частью отдельного rxjava-math модуля, где он реализован четырьмя операторами, специфичными для типов: averageDouble, averageFloat, averageInteger, и averageLong.

average

Вы также можете вычислить среднее значение не самих элементов, а результатов применения функции к каждому элементу, как показано на иллюстрации выше, которая испускает среднее число сторон фигур, испускаемых исходным наблюдаемым объектом.

Этот оператор завершится с ошибкой IllegalArgumentException , если исходный наблюдаемый объект не испустит ни одного элемента.

RxJS average

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

Вы также можете вычислить среднее значение не самих элементов, а результатов применения функции к каждому элементу, как показано на иллюстрации выше, которая испускает среднее число сторон фигур, испускаемых исходным наблюдаемым объектом.

Пример кода

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

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!

© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/average.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API