Kotlin實用函數

Kotlin系列實用函數有幾個標準庫函數,用於Kotlin範圍。 這些實用函數如下:

  • rangeTo()
  • downTo()
  • reversed()
  • step()

Kotlin rangeTo()

rangeTo()函數用於以範圍中提到的遞增順序從開始到結束返回值。 rangeTo()函數是調用Range類構造函數的整數類型。

rangeTo()函數的示例

fun main(args: Array<String>) {
    var range: IntRange = 1.rangeTo(5)
    println("Printing value: 1.rangeTo(5)")
    for (x in range){
        print("$x ")
    }
    println("")
    var range2: IntRange = IntRange(1,5)
    println("Printing value: IntRange(1,5)")
    for (x in range2){
        print("$x ")
    }
}

執行上面示例代碼,得到以下結果 -

Printing value: 1.rangeTo(5)
1 2 3 4 5 
Printing value: IntRange(1,5)
1 2 3 4 5

浮點(如DoubleFloat)數據類型(或類型)未在rangeTo運算符中定義。

Kotlin downTo()

downTo()擴展函數用於以遞減順序從高階到低階返回值。 downTo()函數是爲整數類型定義的。

語法:

fun Long.downTo(other: Int): LongProgression {
    return LongProgression.fromClosedRange(this, other.toLong(), -1L)
}

fun Byte.downTo(other: Int): IntProgression {
    return IntProgression.fromClosedRange(this.toInt(), other, -1)
}

downTo()函數的示例

fun main(args: Array<String>) {
    println("Range 1")
    var range1 = 5 downTo 1
    for (x in range1){
        print("$x ")
    }
    println()
    println("Range 2")
    var range2: IntProgression = 5.downTo(1)
    for (x in range2){
        print("$x ")
    }
    println()
    println("Range 3")
    var range3: IntProgression = IntProgression.fromClosedRange(5,1,-1)
    for (x in range3){
        print("$x ")
    }

}

執行上面示例代碼,得到以下結果 -

Range 1
5 4 3 2 1 
Range 2
5 4 3 2 1 
Range 3
5 4 3 2 1

Kotlin reversed()函數

reversed()函數用於反轉返回給定範圍類型的順序。

語法:

fun IntProgression.reversed(): IntProgression {  
    return IntProgression.fromClosedRange(last, first, -step)  
}

reverse()函數的示例

fun main(args: Array<String>) {
    println("Reversed 1")
    var range1 = 1..5
    for (x in range1.reversed()){
        print("$x ")
    }
    println()
    println("Reversed 2")
    var range2: IntRange = IntRange(1,5)
    for (x in range2.reversed()){
        print("$x ")
    }
    println()
    println("Reversed 3")
    var range3 = IntProgression.fromClosedRange(5,1,-1)
    for (x in range3.reversed()){
        print("$x ")
    }
    println()
    println("Reversed 4")
    var range4: IntProgression = IntProgression.fromClosedRange(5,1,-2)
    for (x in range4.reversed()){
        print("$x ")
    }
}

執行上面示例代碼,得到以下結果 -

Reversed 1
5 4 3 2 1 
Reversed 2
5 4 3 2 1 
Reversed 3
1 2 3 4 5 
Reversed 4
1 3 5

Kotlin step()函數

step()函數(或步長運算符)用於返回按給定間隔步長值的範圍值。 步長值始終採用正參數。 負步長值會生成IllegalArgumentException異常。

step()函數的示例

fun main(args: Array<String>) {
    val range: IntRange = 1..10
    println("使用步長 2 打印範圍值:")
    for(x in range step (2)){
        print("$x ")
    }
    println("")
    println("使用步長 3 打印範圍值:")
    for(x in range step 3){
        print("$x ")
    }
    val first=((range step 2).first)
    val last=((range step 2).last)
    println("")
    println("間隔的第一個值: $first")
    println("間隔的最後一個值: $last ")
}

執行上面示例代碼,得到以下結果 -

使用步長 2 打印範圍值:
1 3 5 7 9 
使用步長 3 打印範圍值:
1 4 7 10 
間隔的第一個值: 1
間隔的最後一個值: 9

如果使用負整數作爲步長值,則會拋出異常。

fun main(args: Array<String>) {  
    val range: IntRange = IntRange(1,10)  
    for (x in range step -2){  
        print("$x ")  
    }  
}

執行上面示例代碼,得到以下結果 -

Exception in thread "main" java.lang.IllegalArgumentException: Step must be positive, was: -2.
    at kotlin.ranges.RangesKt__RangesKt.checkStepIsPositive(Ranges.kt:130)
    at kotlin.ranges.RangesKt___RangesKt.step(_Ranges.kt:432)
    at TestKt.main(Test.kt:63)
0 條評論,你可以發表評論,我們會進行改進
Comment author placeholder