Среднее значение
вычисляет среднее значение чисел, испускаемых наблюдаемым объектом, и испускает это среднее значение
Оператор Среднее значение работает с наблюдаемым объектом, который испускает числа (или элементы, которые могут быть оценены как числа), и испускает одно значение: среднее значение всех чисел, испускаемых исходным наблюдаемым объектом.
См. также
Информация, специфичная для языка
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
Вы также можете вычислить среднее значение не самих элементов, а результатов применения функции к каждому элементу, как показано на иллюстрации выше, которая испускает среднее число сторон фигур, испускаемых исходным наблюдаемым объектом.
Этот оператор завершится с ошибкой IllegalArgumentException , если исходный наблюдаемый объект не испустит ни одного элемента.
RxJava 1․x averageDouble averageFloat averageInteger averageLong
Этот оператор не входит в ядро RxJava, но является частью отдельного rxjava-math модуля, где он реализован четырьмя операторами, специфичными для типов: averageDouble, averageFloat, averageInteger, и averageLong.
Вы также можете вычислить среднее значение не самих элементов, а результатов применения функции к каждому элементу, как показано на иллюстрации выше, которая испускает среднее число сторон фигур, испускаемых исходным наблюдаемым объектом.
Этот оператор завершится с ошибкой IllegalArgumentException , если исходный наблюдаемый объект не испустит ни одного элемента.
RxJS 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
Вы также можете вычислить среднее значение не самих элементов, а результатов применения функции к каждому элементу, как показано на иллюстрации выше, которая испускает среднее число сторон фигур, испускаемых исходным наблюдаемым объектом.
Пример кода
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.jsrx.all.compat.jsrx.aggregates.js
Он требует одного из следующих:
rx.jsrx.compat.jsrx.lite.jsrx.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