Kotlin 中的循環語句有 for 和 while 兩個,可是由於 Kotlin 做爲一種更現代的語言,提供了更加方便的函數式編程方法,使用流式 API 處理之前須要用循環的地方會更加簡潔,因此建議你們在可以使用流式 API 的地方儘可能不要使用循環語句。java
Kotlin 中的 for 循環拋棄了類 C 語言中的三段式參數,這種寫循環的方式有幾個弊端:算法
很是容易在邊界問題上出錯(這也是學校考試的重點);編程
爲指定循環次數引入沒必要要的參數(大名鼎鼎的 i);數組
寫法臃腫不堪。app
Kotlin 爲解決這個問題,對 for 循環進行了改革:它規定,全部的 for 循環都使用 遍歷元素 in 遍歷對象 肯定遍歷的方式,這裏的「遍歷對象」能夠是 區間、數組、集合 和其餘任何提供了 iterator 迭代器的對象。ide
首先咱們看一下數組和集合,咱們能夠直接使用 for 循環遍歷它們中的元素:函數式編程
val arrayInt = intArrayOf(1, 2, 3, 4, 5)for (item in arrayInt) { println("$item")}
第二行裏的 item 就是 arrayInt 數組中的元素。函數
若是須要遍歷數組或集合的索引,可使用數組和集合的 indices 屬性:spa
for (i in arrayInt.indices) { println("arrayInt[$i] is ${arrayInt[i]}")}
若是須要遍歷數組和集合的索引和值,可使用庫函數裏的 withIndex() 方法,它返回一個 IndexedValue 對象,咱們經過 解構聲明 能夠同時獲取索引和值:orm
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
注意,這裏的步長只能是 整數。
與 Java 徹底相同。(除了算法,誰會用它)