Kotlin - 范围函数

Kotlin - 范围函数 首页 / Kotlin入门教程 / Kotlin - 范围函数

Kotlin range实用程序功能具有在Kotlin range中使用的几个标准库函数。这些实用程序功能如下:

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

rangeTo()

rangeTo函数用于按范围中提到的升序从头到尾返回值。 rangeTo函数是整数类型,它调用Range类的构造函数。

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

像Double,Float这样的浮点数据类型(或多个数据类型)未在rangeTo运算符中定义。

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

reversed()

reversed函数用于返回给定范围类型的逆序。

语法:

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

reversed函数的示例

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

step()

step函数(或step运算符)用于以给定step值的间隔返回范围值。步长值始终为正参数。负步进值将生成IllegalArgumentException异常。

fun main(args: Array<String>) {
    val range: IntRange = 1..10
    println("Print range value with step 2:")
    for(x in range step (2)){
        print("$x ")
    }
    println("")
    println("Print range value with step 3:")
    for(x in range step 3){
        print("$x ")
    }
    val first=((range step 2).first)
    val last=((range step 2).last)
    println("")
    println("First value of interval: $first")
    println("Last value of interval: $last ")
}

输出:

Print range value with step 2:
1 3 5 7 9 
Print range value with step 3:
1 4 7 10 
First value of interval: 1
Last value of interval: 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)

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

玩转Spring全家桶 -〔丁雪丰〕

玩转webpack -〔程柳锋〕

现代C++编程实战 -〔吴咏炜〕

深入浅出云计算 -〔何恺铎〕

动态规划面试宝典 -〔卢誉声〕

Go 语言项目开发实战 -〔孔令飞〕

深入浅出分布式技术原理 -〔陈现麟〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

后端工程师的高阶面经 -〔邓明〕

好记忆不如烂笔头。留下您的足迹吧 :)