Sum

计算 Observable 发出的数字的总和,并发出该总和

Sum 运算符作用于发出数字(或可以作为数字计算的项目)的 Observable,并发出单个值:源 Observable 发出的所有数字的总和。

另请参见

特定于语言的信息

待定

待定

在 RxGroovy 中,此运算符不在 ReactiveX 核心部分,而是独立的 rxjava-math 模块的一部分,在该模块中,它通过四个类型特定的运算符实现:sumDoublesumFloatsumIntegersumLong。以下示例演示了这些运算符的工作原理

示例代码

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
sum

您还可以对每个项目应用函数的结果进行求和,而不是对项目本身进行求和,如上图所示,它发出源 Observable 发出的图形边数的总和。

stringConcat

在独立的 StringObservable 类(默认情况下不属于 RxGroovy 的一部分)中,还有一个 stringConcat 运算符,它将发出字符串序列的 Observable 转换为发出单个字符串的 Observable,该字符串代表所有字符串的串联。

join

在独立的 StringObservable 类(默认情况下不属于 RxGroovy 的一部分)中,还有一个 join 运算符,它将发出字符串序列的 Observable 转换为发出单个字符串的 Observable,该字符串代表每个字符串的串联,并以您选择的字符串分隔。

此运算符不在 RxJava 核心部分,而是独立的 rxjava-math 模块的一部分,在该模块中,它通过四个类型特定的运算符实现:sumDoublesumFloatsumIntegersumLong

sum

您还可以对每个项目应用函数的结果进行求和,而不是对项目本身进行求和,如上图所示,它发出源 Observable 发出的图形边数的总和。

stringConcat

在独立的 StringObservable 类(默认情况下不属于 RxJava 的一部分)中,还有一个 stringConcat 运算符,它将发出字符串序列的 Observable 转换为发出单个字符串的 Observable,该字符串代表所有字符串的串联。

join

在独立的 StringObservable 类(默认情况下不属于 RxJava 的一部分)中,还有一个 join 运算符,它将发出字符串序列的 Observable 转换为发出单个字符串的 Observable,该字符串代表每个字符串的串联,并以您选择的字符串分隔。

sum

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
sum

您还可以对每个项目应用函数的结果进行求和,而不是对项目本身进行求和,如上图所示,它发出源 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!
    

待定

待定