Count 運算子會將發射項目的 Observable 轉換為發射單一值的 Observable,該值代表來源 Observable 發射的項目數量。
如果來源 Observable 以錯誤終止,Count 將傳遞此錯誤通知,而不會先發射項目。如果來源 Observable 完全沒有終止,Count 既不會發射項目也不會終止。
RxClojure 具有此運算子的 count
和 longCount
變體,但這兩者實際上都回傳 long 值。
RxCpp 將此運算子實作為 count
。
在 RxGroovy 中,此運算子稱為 count
,而它建立的 Observable 發射 Integer 值。還有一個 countLong
,其 Observable 發射 Long 值。
def myObservable = Observable.create({ aSubscriber -> if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext('Three'); if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext('Two'); if(false == aSubscriber.isUnsubscribed()) aSubscriber.onNext('One'); if(false == aSubscriber.isUnsubscribed()) aSubscriber.onCompleted(); }); myObservable.count().subscribe( { println(it); }, // onNext { println("Error: " + it.getMessage()); }, // onError { println("Sequence complete"); } // onCompleted );
3 Sequence complete
count()
countLong()
在 RxJava 中,此運算子稱為 count
,而它建立的 Observable 發射 Integer 值。還有一個 countLong
,其 Observable 發射 Long 值。
String[] items = new String[] { "one", "two", "three" }; assertEquals( new Integer(3), Observable.from(items).count().toBlocking().single() );
count()
countLong()
在 RxJS 中,count
運算子會計算來源 Observable 中滿足指定謂詞的項目數量。該謂詞的形式為接受三個參數的函式
如果謂詞函式回傳 true
,count
將會增加在來源 Observable 完成時報告的項目總數。如果您想要計算來源 Observable 發射的所有項目,只需傳遞 count
一個總是回傳 true
的謂詞
numberOfItems = someObservable.count(function() { return true; });
count
是下列套件的一部分
rx.all.js
rx.all.compat.js
rx.aggregates.js
count
需要下列任何一個套件
rx.js
rx.compat.js
rx.lite.js
rx.lite.compat.js
RxKotlin 將此運算子實作為 count
。
val list = listOf(1, 2, 3, 4, 5) assertEquals( 5, Observable.from(list)!!.count()!!.toBlocking()!!.single() )
在 Rx.NET 中,此運算子建立的 Observable 發射 Integer 值,但還有一個 LongCount
,其 Observable 發射 Long 值。對於這兩種變體,您可以將來源 Observable 作為參數傳遞給運算子,或者您可以將運算子作為來源 Observable 的實例方法呼叫(在這種情況下,您可以省略參數)。
RxPHP 將此運算子實作為 count
。
回傳一個 observable 序列,其中包含一個值,表示指定 observable 序列中滿足條件的元素數量(如果已提供),否則為項目計數。
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/count/count.php $source = \Rx\Observable::fromArray(range(1, 10)); $subscription = $source->count()->subscribe($stdoutObserver);
Next value: 10 Complete!
在 RxPY 中,您可以選擇傳遞一個謂詞給 count
,該謂詞會將來源 Observable 發射的項目作為參數。如果這樣做,count
將僅發射來源 Observable 中謂詞評估為 true
的項目的計數。否則,它將發射來源 Observable 發射的所有項目的計數。
numberOfItems = someObservable.count() numberOfNegativeItems = someObservable.count(lambda x: x < 0)
在 Rx.rb 中,您可以選擇傳遞一個謂詞給 count
,該謂詞會將來源 Observable 發射的項目作為參數。如果這樣做,count
將僅發射來源 Observable 中謂詞評估為 true
的項目的計數。否則,它將發射來源 Observable 發射的所有項目的計數。
在 RxScala 中,count
運算子會計算來源 Observable 中滿足指定謂詞的項目數量。該謂詞會接受發射的項目作為參數並回傳布林值。count
將發射此謂詞回傳 true
的所有項目的計數。
如果您想要計算來源 Observable 發射的所有項目並將此計數發射為 Integer,請改用 length
或 size
,或者使用 longCount
將其發射為 Long。