總和

計算 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!
    

待定

待定