Sum 运算符作用于发出数字(或可以作为数字计算的项目)的 Observable,并发出单个值:源 Observable 发出的所有数字的总和。
待定
待定
在 RxGroovy 中,此运算符不在 ReactiveX 核心部分,而是独立的 rxjava-math
模块的一部分,在该模块中,它通过四个类型特定的运算符实现:sumDouble
、sumFloat
、sumInteger
和 sumLong
。以下示例演示了这些运算符的工作原理
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.sumInteger(myObservable).subscribe( { println(it); }, // onNext { println("Error encountered"); }, // onError { println("Sequence complete"); } // onCompleted );
10 Sequence complete
您还可以对每个项目应用函数的结果进行求和,而不是对项目本身进行求和,如上图所示,它发出源 Observable 发出的图形边数的总和。
在独立的 StringObservable
类(默认情况下不属于 RxGroovy 的一部分)中,还有一个 stringConcat
运算符,它将发出字符串序列的 Observable 转换为发出单个字符串的 Observable,该字符串代表所有字符串的串联。
在独立的 StringObservable
类(默认情况下不属于 RxGroovy 的一部分)中,还有一个 join
运算符,它将发出字符串序列的 Observable 转换为发出单个字符串的 Observable,该字符串代表每个字符串的串联,并以您选择的字符串分隔。
sumDouble sumFloat sumInteger sumLong StringObservable.join StringObservable.stringConcat
此运算符不在 RxJava 核心部分,而是独立的 rxjava-math
模块的一部分,在该模块中,它通过四个类型特定的运算符实现:sumDouble
、sumFloat
、sumInteger
和 sumLong
。
您还可以对每个项目应用函数的结果进行求和,而不是对项目本身进行求和,如上图所示,它发出源 Observable 发出的图形边数的总和。
在独立的 StringObservable
类(默认情况下不属于 RxJava 的一部分)中,还有一个 stringConcat
运算符,它将发出字符串序列的 Observable 转换为发出单个字符串的 Observable,该字符串代表所有字符串的串联。
在独立的 StringObservable
类(默认情况下不属于 RxJava 的一部分)中,还有一个 join
运算符,它将发出字符串序列的 Observable 转换为发出单个字符串的 Observable,该字符串代表每个字符串的串联,并以您选择的字符串分隔。
RxJS 将此运算符实现为 sum
。以下代码示例演示了如何使用它
var source = Rx.Observable.range(0, 9).sum(); var subscription = source.subscribe( function (x) { console.log('Next: ' + x); }, function (err) { console.log('Error: ' + err); }, function () { console.log('Completed'); });
Next: 45 Completed
您还可以对每个项目应用函数的结果进行求和,而不是对项目本身进行求和,如上图所示,它发出源 Observable 发出的图形边数的总和。
var arr = [ { value: 1 }, { value: 2 }, { value: 3 } ]; var source = Rx.Observable.fromArray(arr).sum(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: 6 Completed
sum
位于以下发行版中
rx.all.js
rx.all.compat.js
rx.aggregates.js
它需要以下其中之一
rx.js
rx.compat.js
rx.lite.js
rx.lite.compat.js
待定
RxPHP 将此运算符实现为 sum
。
计算一系列值的总和
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/sum/sum.php $source = Rx\Observable::range(1, 10) ->sum(); $subscription = $source->subscribe($stdoutObserver);
Next value: 55 Complete!
待定
待定