流程控制:循環語句

Kotlin 中的循環語句有 for 和 while 兩個,但是因爲 Kotlin 作爲一種更現代的語言,提供了更加方便的函數式編程方法,使用流式 API 處理以前需要用循環的地方會更加簡潔,所以建議大家在能夠使用流式 API 的地方儘量不要使用循環語句。

1. for 循環語句

Kotlin 中的 for 循環拋棄了類 C 語言中的三段式參數,這種寫循環的方式有幾個弊端:

  1. 非常容易在邊界問題上出錯(這也是學校考試的重點);

  2. 爲指定循環次數引入不必要的參數(大名鼎鼎的 i);

  3. 寫法臃腫不堪。

Kotlin 爲解決這個問題,對 for 循環進行了改革:它規定,所有的 for 循環都使用 遍歷元素 in 遍歷對象 確定遍歷的方式,這裏的“遍歷對象”可以是 區間、數組、集合 和其他任何提供了 iterator 迭代器的對象。

首先我們看一下數組和集合,我們可以直接使用 for 循環遍歷它們中的元素:

val arrayInt = intArrayOf(1, 2, 3, 4, 5)for (item in arrayInt) {

  println("$item")}

第二行裏的 item 就是 arrayInt 數組中的元素。

如果需要遍歷數組或集合的索引,可以使用數組和集合的 indices 屬性:

for (i in arrayInt.indices) {

  println("arrayInt[$i] is ${arrayInt[i]}")}

如果需要遍歷數組和集合的索引和值,可以使用庫函數裏的 withIndex() 方法,它返回一個 IndexedValue 對象,我們通過 解構聲明 可以同時獲取索引和值:

for ((index, value) in arrayInt.withIndex()) {

  println("arrayInt[$index] is $value")}

上面三個 for 循環語句使用了不同的遍歷對象,但輸出了相同的結果,讓我們可以通過不同的方法靈活地遍歷數組和集合。

區間 是 Kotlin 加入的一種新的數據形式,它的構成是 較小元素 .. 較大元素,這裏的“..”操作符重載了 rangeTo() 函數。

只要是實現了 Compare 接口的類型,都能使用區間,但是我們一般用的比較多的是 整數區間,而且只有整數區間才能用作 for 循環中的迭代

for (i in 1..5) println(i) //輸出 1 到 5 的數字

如果想倒序循環,可以使用 downTo() 函數,一般寫成中綴的形式:

for (i in 5 downTo 1) println(i) //輸出 5 到 1 的數字

特定步長可以使用 step() 函數,一般也寫成中綴的形式:

for (i in 5 downTo 1 step 3) println(i) //輸出 5 2for (i in 1..5 step 2) println(i) //輸出 1 3 5

注意,這裏的步長只能是 整數

2. while 語句

與 Java 完全相同。(除了算法,誰會用它)


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