Upgrade to Pro — share decks privately, control downloads, hide ads and more …

いつか使ってみたいOperatorたち

 いつか使ってみたいOperatorたち

https://connpass.com/event/57150/
Rx Ja Night Vol.2での発表資料です。

kazy1991

June 12, 2017
Tweet

More Decks by kazy1991

Other Decks in Technology

Transcript

  1. Ambのサンプルコード fun ampSample() { val o1 = Observable.just(1, 2, 3)

    val o2 = Observable.just(4, 5, 6).delay(1L, TimeUnit.SECONDS) val o3 = Observable.just(7, 8, 9).delay(2L, TimeUnit.SECONDS) Observable.amb(o1, o2, o3) .subscribe { Log.d(TAG, "item: $it") // "item: 1, item: 2, item: 3" } } RxJava 1系 RxJava 2系 fun ampSample() { val o1 = Observable.just(1, 2, 3) val o2 = Observable.just(4, 5, 6).delay(1L, TimeUnit.SECONDS) val o3 = Observable.just(7, 8, 9).delay(2L, TimeUnit.SECONDS) Observable.ambArray(o1, o2, o3) .subscribe { Log.d(TAG, "item: $it") // "item: 1, item: 2, item: 3" } } 1/8
  2. Allのサンプルコード fun allSample() { Observable.just(1, 2, 3, 4, 5) .all

    { it < 10 } .subscribe { Log.d(TAG, "item: $it") // item: true } } RxJava 1系 2/8
  3. Cache   Cache      

           3/8
  4. Cacheのサンプルコード fun cacheSample() { val o1 = Observable.interval(1, TimeUnit.SECONDS) .take(3)

    .timestamp() .cache() o1 .doAfterTerminate { // Ұ౓໨ͱಉ͡item͕ྲྀΕͯ͘Δ o1.subscribe { Log.d(TAG, "2nd: item: ${it.timestampMillis}") } } .subscribe { Log.d(TAG, "1st: item: ${it.timestampMillis}") } } RxJava 1系 3/8
  5. toMapのサンプルコード fun toMapSample() { Observable.just(1, 2, 3) .toMap { "key_$it"

    } .flatMap { Observable.from(it.entries) } .subscribe { (key, value) -> // "{key_1: 1, key_2: 2, key_3: 3}" Log.d(TAG, "key: $key value: $value") } } RxJava 1系 6/8
  6. toMultiMapのサンプルコード fun toMultiMapSample() { Observable.just(1, 2, 3, 4, 5, 6)

    .toMultimap { if (it % 2 == 0) { "even" } else { "odd" } } .flatMap { Observable.from(it.entries) } .subscribe { (key, value) -> // "{even: [2, 4, 6], odd: [1, 3, 5]}" Log.d(TAG, "key: $key value: $value") } } RxJava 1系 6/8
  7. Timestampのサンプルコード fun timeStampSample() { Observable.interval(1, TimeUnit.SECONDS) .take(3) .timestamp() .subscribe {

    Log.d(TAG, "item: $it") //item: Timestamped(timestampMillis = 1497221576918, value = 0) } } RxJava 1系 7/8
  8. Sorted/toSortedListのサンプルコード fun sortedSample() { Observable.just(3, 2, 1, 5, 4) .sorted

    { t1, t2 -> t2 - t1 } .subscribe { Log.d(TAG, "item: $it") } } fun toSortedListSample() { Observable.range(1, 100) .toSortedList({ t1, t2 -> t2 - t1 }, 100) .subscribe { Log.d(TAG, "item: $it") } } RxJava 1系 8/8
  9. 今日紹介したOperatorたち • Amp • All • Cast • ElementAt •

    Cache • Join • ToMap/ToMultiJoin • Timestamp • Sorted/SortedList Join/GroupJoinも気になってたけど時間が足りなかった。。