Kotlin範圍


Kotlin範圍定義為從起始值到結束值的間隔。 範圍表示式使用運算子(..)建立,並由in!in補充。 等於或大於起始值且小於或等於結束值的值在定義的範圍內。

val aToZ = 'a'..'z'  
val oneToNine = 1..9

在上述程式碼:val aToZ ='a'..'z',表示a包含在aToZ中,b包含在aToZ中,依此類推。 程式碼val oneToNine = 1..9表示1包含在oneToNine中,但oneToNine中不包含10

整數型別範圍

整數型別範圍(IntRangeLongRangeCharRange)是用於for迴圈。 編譯器以簡單的Java索引for迴圈模擬轉換此整數型別。

Kotlin範圍的例子

fun main(args: Array<String>) {

    for (a in 1..5){
        print(a )
    }
    println()
    for(x in 'a'..'f'){
        print(x )
    }
    println()
    val range = 1.0..5.0
    println(range)
    println("3.14 in range is ${3.14 in range}")
}

執行上面範例程式碼,得到以下結果 -

12345
abcdef
1.0..5.0
3.14 in range is true

當嘗試使用遞減順序疊代r範圍時發生了什麼?..運算子將不列印任何內容。

 for (a in 5..1){
     print(a )// print nothing
 }

要按降序疊代元素,請使用標準庫downTo()函式或downTo關鍵字。

for (a in 5 downTo 1){  
    print(a )// 54321  
}

until範圍

until()函式或until範圍中的關鍵字用於排除最後一個元素。 它疊代範圍從開始到結束時少於1

for (a in 1 until 5){  
    print(a) // print 1234  
}

以上範圍不包括5,它是從14疊代。

Kotlin整數範圍

下面來看看如何使用downTo()downTorangeTo()方法的整數範圍的範例。

fun main(args: Array<String>) {
    for (x in 1..5)
        print(x)
    println()
    for (x in 5 downTo 1)
        print(x)
    println()
    for (x in 1.rangeTo(5))
        print(x)
    println()
    for (x in 5.downTo(1))
        print(x)
    println()
}

執行上面範例程式碼,得到以下結果 -

12345
54321
12345
54321

Kotlin字元範圍

使用char資料型別的Kotlin範圍範例。

fun main(args: Array<String>) {
    for(x in 'a'..'e')
    print("$x ")
    println()
    for (x in 'e' downTo 'a')
        print("$x ")
}

執行上面範例程式碼,得到以下結果 -

a b c d e 
e d c b a

Kotlin範圍步長

範圍內的Kotlin step關鍵字用於在給定步長值(int型別)的區間內疊代範圍。

fun main(args: Array<String>) {
    for (x in 1..10 step 2)
        print("$x ")
    println()
    for (x in 10 downTo 1 step 3)
        print("$x ")
}

執行上面範例程式碼,得到以下結果 -

1 3 5 7 9 
10 7 4 1

Kotlin範圍疊代器

iterator()方法也可用於迭代範圍值。 它使用hasNext()方法檢查範圍中的下一個元素,next()方法返回範圍的下一個元素。

fun main(args: Array<String>) {

    val chars = ('a'..'e')
    val it = chars.iterator()
    while (it.hasNext()) {
        val x = it.next()
        print("$x ")
    }
}

執行上面範例程式碼,得到以下結果 -

a b c d e