天天看點

Kotlin實戰指南四:區間

Kotlin初體驗四:區間

    • 區間
    • 實用函數

區間表達式由具有操作符形式 … 的 rangeTo 函數輔以 in 和 !in 形成。 區間是為任何可比較類型定義的,但對于整型原生類型,它有一個優化的實作。以下是使用區間的一些示例:

if (i in 1..10) { // 等同于 1 <= i && i <= 10
    println(i)
}
           

整型區間(IntRange、 LongRange、 CharRange)有一個額外的特性:它們可以疊代。 編譯器負責将其轉換為類似 Java 的基于索引的 for-循環而無額外開銷:

for (i in 1..4) print(i)
           

如果你想倒序疊代數字呢?也很簡單。你可以使用标準庫中定義的 downTo() 函數:

for (i in 4 downTo 1) print(i)
           

能否以不等于 1 的任意步長疊代數字? 當然沒問題, step() 函數有助于此:

for (i in 1..4 step 2) print(i)

for (i in 4 downTo 1 step 2) print(i)
           

要建立一個不包括其結束元素的區間,可以使用 until 函數:

for (i in 1 until 10) {
    // i in [1, 10) 排除了 10
    println(i)
}
           

rangeTo  //升序區間
downTo()  //降序區間
reversed()  //翻轉區間
step()  //步長
           

執行個體演練

var a = 0.rangeTo(10)  //相當于 0..10

var b = 10.downTo(0)  //相當于 10..0
b = b.reversed()    //翻轉區間
var b = 10.downTo(0).step(3)
           
(1..12 step 2).last == 11  // 值為 [1, 3, 5, 7, 9, 11] 的數列
(1..12 step 3).last == 10  // 值為 [1, 4, 7, 10] 的數列
(1..12 step 4).last == 9   // 值為 [1, 5, 9] 的數列