Kotlin學習之旅(D2)-基本語法

Day 2

Kotlin學習之旅的第二天

今天讓我們完成 基礎語法 的學習

前言

昨天,我們學習了一部分的基礎語法,文章鏈接:Kotlin學習之旅(D1)-學習計劃&基本語法

最後還剩下三個基礎語法沒學:

  • for循環和while循環
  • when表達式
  • 遍歷集合

今天讓我們一個個解決掉~

循環

for循環

在Java,C,Python等各種編程語言中,都會有循環控制,其中for循環又是最爲常見的,在Kotlin中,for循環的語法爲:

for(item in collection){
    print(item)
}

通過 in 關鍵字來進行循環,當然,也可以指定範圍:

for (i in 1..3){
    println(i)
}

通過 “…” 表示範圍,那麼如果是隻取奇數,或者偶數呢?間隔3個數取值呢?這時候就要用到 step 關鍵字了

for(i in 1..6 step 2){
    println(i)
}

輸出結果爲:

1
3
5

因爲我們取值範圍是1-6,每隔1個取值(step 2)

好了,那麼如果我們希望從大到小取值呢,kotlin裏面提供了一個downTo關鍵字

for (i in 6 downTo 0 step 2) {
    println(i)
}

這個函數的輸出結果就是:

6
4
2
0

因爲我們取值範圍是6-0,每隔1個取值(step 2)

除了最基本的int型,我們還可以取數組的值:

fun main(args: Array<String>) {
val array = arrayOf("a", "b", "c")
    for (i in array.indices) {
        println(array[i])
    }
}

其他的集合類型我們會在後面的 遍歷集合 裏面再講

while循環

while循環的語法比較簡單:

while (x > 0) {
    x--
}

do {
    val y = retrieveData()
} while (y != null) // y is visible here!

通常是 while(“條件語句”) { … } 或者是 do { … } while(“條件語句”)

when表達式

上面講的 for 和 while 在 Java裏面都有,所以看一遍基本上就差不多了,但是when表達式,在Java裏面是沒有的,比較相像的是switch語句,其實when也是條件判斷,或者說是控制流的一種。

基本用法:

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> { // Note the block
        print("x is neither 1 nor 2")
    }
}

但是when表達式有個很厲害的地方,他可以接收表達式,或者是普通的語句,什麼意思呢?看個例子就明白了:

when (x) {
    in 1..10 -> print("x is in the range")
    in validNumbers -> print("x is valid")
    !in 10..20 -> print("x is outside the range")
    else -> print("none of the above")
}

如果是switch語句,那麼case的條件裏面只能是string類型,但是在when裏面則靈活許多,可以是1-10範圍內的數字,可以使用"!"表示“非”,甚至可以在裏面調用方法:

when {
    x.isOdd() -> print("x is odd")
    x.isEven() -> print("x is even")
    else -> print("x is funny")
}

雖然這種條件判斷我們也可以通過if…else 來實現,但是閱讀起來,還是when表達式比較好理解。

遍歷集合

一邊遍歷集合都會在for循環裏面使用,例如:

fun main(args: Array<String>) {
    val items = listOf("apple", "banana", "kiwifruit")
    for (item in items) {
        println(item)
    }
}

輸出結果爲:

apple
banana
kiwifruit

同樣的,在while循環中也可以遍歷集合:`

fun main(args: Array<String>) {
    val items = setOf("apple", "banana", "kiwifruit")
    when {
        "orange" in items -> println("juicy")
        "apple" in items -> println("apple is fine too")
    }
}

這裏雖然不太明顯,但是其實通過 “orange” in items 判斷 "orange"是否在items中的時候,就需要遍歷整個集合,所以說 “in” 關鍵字的作用就是遍歷

總結

好了,基礎知識到這裏就全部講完了,這兩天學到的基本語法在日常開發中我們經常會用到,貌似Kotlin的特性我們一個都還沒說,例如:空安全,lambda表達式,如何自動生成getter和setter的類等等,這些我們會在接下來爲期3天的高級語法之旅中進行學習。

這兩天的基礎語法其實就是讓大家對kotlin這門語言有一點印象,想要真正要寫出優雅,可讀,高效的代碼,我們還需要進行其他的理論學習,再加上不斷不斷的實踐。

Day 2 - Learning Kotlin Trip,Completed.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章