Average 运算符作用于发出数字(或可以评估为数字的项目)的可观察对象,并发出单个值:源可观察对象发出的所有数字的平均值。
待定
在 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 核心库中,而是属于独立的 rxjava-math
模块,在该模块中,它通过四个特定类型的运算符实现:averageDouble
、averageFloat
、averageInteger
和 averageLong
。
您也可以对应用于每个项目的函数的结果进行平均,而不是对项目本身进行平均,如上图所示,它发出源可观察对象发出的图形的平均边数。
如果源可观察对象没有发出任何项目,此运算符将抛出 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
您也可以对应用于每个项目的函数的结果进行平均,而不是对项目本身进行平均,如上图所示,它发出源可观察对象发出的图形的平均边数。
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!
待定
待定
待定