1. 程式人生 > >Kotlin 全面學習之路 (二) -- 控制流(If、When、For、While)

Kotlin 全面學習之路 (二) -- 控制流(If、When、For、While)

1、If/else 語句

在 Kotlin 中 If/else 可以和在 Java 一樣使用,與之不一樣的是在 Kotlin 中它可以作為 帶有返回值的表示式,如同 Java 中的三目運算子:

val max = if(a > b) a else b

注意:If 語句作為表示式時 必須帶有 else 語句

2、When 語句

Kotlin 中的 when 語句相當於 Java 中的 switch 句

when(x){
  a -> 語句1
  b -> 語句2 
  method(c) -> 語句3
  else -> 其他
}

val a =  when
(x){ a -> 語句1 b -> 語句2 method(c) -> 語句3 else -> 其他 }

其中每一個分支既可以為 變數 也可以為 表示式

注意: 就像 If/else 語句一樣,當 when 語句被當作表示式時,必須有 else 分支

按照 when 語句的表達含義,我們可以用 when 語句替代 If/else 語句。

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

3、For 迴圈

常見的幾種 for 語句的用法:

//常見的形式
for(i in 1..10){
  println(i)
}

for(i in 1 until 10){
  println(i)
}

for(i in 10 downTo 1){
  println(i)
}

//步進
for(i in 1..10 step 2){
  println(i)
}

//相當於 for 語句的高階函式
repeat(10){
  println(i)
}

需要注意的是以下情況是不存在的

//這是錯誤的表示方式
for(i in 10..1){ println(i) }

配合 Kotlin 庫函式我們可以更方便的遍歷陣列或集合,以下為幾個例子:

for (i in array.indices) {
    println(array[i])
}


for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}

4、While 語句

while 語句在 Kotlin 的表達方式和 Java 中幾乎沒什麼區別,具體如下:

while (x > 0) {
    x--
}

do {
    val y = retrieveData()
} while (y != null)

對於我來說,這一次重新梳理 Kotlin 語法讓我重新認識的是:

  1. 當 If 和 When 語句當作表示式時 else 是必不可少的
  2. 在 For 語句迴圈中,初步認識了 解構函式 的存在