RxKotlin 例子不超過15行教程 1----環(huán)境配置與初體驗

找了很多天也沒有找到關(guān)于 RxKotlin 的文章,而 RxJava 的文章不能體現(xiàn) Kotlin 的優(yōu)勢。那就自己動手寫。

我看不懂長篇大論,所以這個系列沒有一個例子超過15行 : )

版本

  • Kotlin 1.2
  • JDK 8 (IDEA 在 9 中會有一些異常)
  • Gradle 4.5
  • RxKotlin 2.2

完整源代碼

Github

配置

build.gradledependencies 中加入

compile 'io.reactivex.rxjava2:rxkotlin:2.2.0'

開始

// 1.kt
import io.reactivex.*
import io.reactivex.rxkotlin.*

fun main(args: Array<String>) {
    val list: List<Any> = listOf("One", 2, "Three", "Four", 4.5, "Five", 6.0f)  // 類型標(biāo)注可省,這里添加是為了看得清楚,下同
    val observable: Observable<Any> = list.toObservable()  // Observable 后續(xù)會提及

    observable.subscribeBy(  // 1. 下面用到了 Kotlin 的命名參數(shù)  2. subscribe 后續(xù)會提及
            onNext = { println(it) },
            onError = { it.printStackTrace() },
            onComplete = { println("Done!") }
    )
}

輸出

One
2
Three
Four
4.5
Five
6.0
Done!

OK,通過上面的代碼已經(jīng)了解 RxKotlin 的基本工作方式了??墒潜闅v列表這件事情實在發(fā)揮不出來 RxKotlin 的威力。來看下一個例子。

// 2.kt
import io.reactivex.subjects.*

fun isEvenOrOdd(n: Int): String = if ((n % 2) == 0) "Even" else "Odd"  // 如果數(shù)字為偶數(shù)返回 "Even" 否則返回 "Odd"

fun main(args: Array<String>) {  // Subject 后續(xù)會提及
    val subject: Subject<Int> = PublishSubject.create()

    subject.map({ isEvenOrOdd(it) })  // map 后續(xù)會提及
           .subscribe({ println("The number is $it") })

    subject.onNext(4)
    subject.onNext(9)
}

輸出

The number is Even
The number is Odd

這節(jié)就到這里,下節(jié)內(nèi)容為 Observable Observersubscribe

前置知識補充

Lambda Function

// 3.kt
fun main(args: Array<String>) {
    val sum = { x: Int, y: Int -> x + y }
    println("Sum ${sum(12, 14)}")
}

輸出

Sum 26

Inline Function

雖然函數(shù)是編寫模塊化代碼的一種很好的方式,但是它有時會增加開銷(維護(hù)函數(shù)棧)。內(nèi)聯(lián)函數(shù)是避免多余開銷的好方法。

// 4.kt
inline fun doSomeStuff(a: Int) = a * a  // 在函數(shù)前加 inline 關(guān)鍵字使其內(nèi)聯(lián)

fun main(args: Array<String>) {
    for (i in 1..5) {
        println("$i Output ${doSomeStuff(i)}")  // 這里的函數(shù)調(diào)用會被替換為函數(shù)代碼
    }
}

輸出

1 Output 1
2 Output 4
3 Output 9
4 Output 16
5 Output 25

RxKotlin 例子不超過15行教程 1----環(huán)境配置與初體驗

RxKotlin 例子不超過15行教程 2----Observable Observer 與 Subscribe 簡介

RxKotlin 例子不超過15行教程 3----Observable 的創(chuàng)建

RxKotlin 例子不超過15行教程 4----Observer Subscribe 與 Hot/Cold Observable

RxKotlin 例子不超過15行教程 5----Subject

RxKotlin 例子不超過15行教程 6----Operator 與 Marble Diagram

RxKotlin 例子不超過15行教程 7----Backpressure Flowable 與 Subscriber 簡介

RxKotlin 例子不超過15行教程 8----Error Handling

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,007評論 25 709
  • 前言 人生苦多,快來 Kotlin ,快速學(xué)習(xí)Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,688評論 9 118
  • Google在今年的IO大會上宣布,將Android開發(fā)的官方語言更換為Kotlin,作為跟著Google玩兒An...
    藍(lán)灰_q閱讀 77,193評論 31 489
  • 1 讀研的時候,我們系有一個很有經(jīng)商頭腦的師哥,靠做考研輔導(dǎo)發(fā)家致富。 至于他的奮斗歷程,那當(dāng)真是一部辛酸腹黑成功...
    露十七閱讀 753評論 3 15
  • 越簡單,越難。 越困頓,越美。 越溫柔,越強。 現(xiàn)代講究極簡,宋朝就是最早的極簡。古代美學(xué),到宋代達(dá)到最高,要求絕...
    為世瑞閱讀 558評論 0 1

友情鏈接更多精彩內(nèi)容