Kotlin學習之起點篇

weixin_33670713發表於2018-02-12

概述

  2017年google開發者大會上,Google正式將kotlin列為其官方語言。那麼,到底kotlin有何厲害之處呢?簡單來說,使用kotlin,可以讓程式碼更加簡潔和易讀,同時支援函數語言程式設計,100%相容老牌開發語言-Java,並且還有很多實用的語法糖。知乎上還有關於kotlin的大牛論戰,看法褒貶不一,但是,個人看來,kotlin是大勢所趨。如果你認為kotlin只能用來開發Android,那就太小看它的用處了,kotlin不僅可以用來開發Android端,還可以開發後臺服務端,前端等,怎麼樣是不是很強大?根據大神爆料,未來kotlin可能還會支援ios開發,因為它與swift語法實在太像了!

資料

  到這裡,你還敢說你不心動嗎?是不是迫不及待想去學習一下了?什麼,如何學?個人看來,官方文件是最好的學習資料,如果覺得不夠,可以看官方推薦的基本不錯的書籍:<Kotlin in Action>,<Kotlin for Android Developers>,<Programming Kotlin>等,雖然都是國外書籍,但是講解很透徹和生動。點選這裡下載完整官方文件PDF版

常見用法

這裡簡單就java開發中常見用法與kotlin進行比較:

  • for迴圈:

Java中我們寫一個for迴圈一般這樣寫:

List<String> list = new ArrayList<String>();
list.add("red");
list.add("green");
list.add("blue");
for(int i=0;i<list.size();i++){
    System.out.println(list.get(i));
}

而在kotlin中我們可以這樣寫:

val list = listOf("red", "green", "blue")
for (item in list) {
    println(item)
}
  • 多種情況的條件語句:

在Java裡,當我們碰到多種條件時,一般會用switch語句替代if-else語句,比如:

private void test(int sign){
        switch (sign){
            case 0:

                System.out.println("this is 0");
                
                break;

            case 1:
                
                System.out.println("this is 1");
                
                break;

            case 2:

                System.out.println("this is 2");

                break;
            default:
                throw new IllegalArgumentException("out of range!");
        }
    }
    

在kotlin中,我們甚至可以這樣:

fun describe(obj: Any): String =
    when (obj) {
        1 -> "One"
        "Hello" -> "Greeting"
        is Long -> "Long"
        !is String -> "Not a string"
        else -> "Unknown"
}

  • 區間用法:

如果我們需要將已知數字進行簡單篩選和排序,Java中無非使用for和if-else語句,而kotlin中可以這樣使用:

for (i in 4 downTo 1 step 2) print(i) 
// 輸出結果為:“4 2”

我們還可以用in運算子來判斷集合內是否包含某個元素:

when {
     "orange" in list -> println("juicy")
     "apple" in list -> println("apple is fine too")
}
  • 各種表示式:

以往,我們在Java中如果需要使用條件或者控制語句得到返回值,一般要在函式內部實現,而kotlin可以直接通過表示式來實現,比如這樣:

fun transform(color: String): Int {
    return when (color) {
       "Red" -> 0
       "Green" -> 1
       "Blue" -> 2
       else -> throw IllegalArgumentException("Invalid color param value")
    }
}

或者這樣:

fun foo(param: Int) {
    val result = if (param == 1) {
        "one"
    } else if (param == 2) {
        "two"
    } else {
        "three"
    }
}
  • 型別檢測:

我們可以使用is運算子來檢測一個表示式是否為某個型別的一個例項:

fun getStringLength(obj: Any): Int? {
     // obj 在 && 右邊⾃動轉換成 String 型別
     if (obj is String && obj.length > 0) {
        return obj.length
     }
     return null
}
  • 使用lambda表示式來過濾和對映集合:
fruits
     .filter { it.startsWith("a") }
     .sortedBy { it }
     .map { it.toUpperCase() }
     .forEach { println(it) }

......

最後

看過了這麼多kotlin用法,你對這門語言怎麼看呢?當然,我只是列舉了幾個kotlin中常見的語法糖,它的強大之處遠不止於此,更多用法可以參考官方文件,後面我也會分專題記錄其用法,並最終通過一個Android專案來展示。

如果你有更多建議和問題,歡迎留言一起探討,也歡迎一起加入Android開發大家庭:


5256969-1b77ef931f304076.jpg
Android集中營

相關文章