In RxGroovy, this operator is not in the ReactiveX core, but is part of the distinct rxjava-math
module, where it is implemented with four type-specific operators: sumDouble
, sumFloat
, sumInteger
, and sumLong
. The following example shows how these operators work:
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 );
You can also sum not the items themselves but the results of a function applied to each item, as in the illustration above, which emits the sum of the number of sides on the figures emitted by the source Observable.
In the distinct StringObservable
class (not part of RxGroovy by default) there is also a stringConcat
operator that converts an Observable that emits a sequence of strings into an Observable that emits a single string that represents the concatenation of them all.
In the distinct StringObservable
class (not part of RxGroovy by default) there is also a join
operator that converts an Observable that emits a sequence of strings into an Observable that emits a single string that represents the concatenation of each of them, delimited by a string of your choosing.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4