# 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
``````

#### 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

1 4 7 10

``````

``````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)
``````