原文: https://beginnersbook.com/2019/02/kotlin-ranges/

在本指南中,我们将讨论 Kotlin 的非常酷的特征,即范围。借助 Kotlin 中的范围,我们可以通过指定起始值和结束值轻松创建序列列表。例如,1..5的范围将创建一系列值1,2,3,4,5。类似地,我们可以创建字符范围,例如'A'..'D',它将创建一系列值 A, B, C, D。我们也可以按相反顺序创建范围,并使用范围创建其他几个范围。让我们开始吧。

Kotlin 范围的一个简单例子

在下面的示例中,我们创建了两个范围,一个是整数范围,另一个是字符范围。我们使用for循环遍历范围的元素。

  1. /**
  2. * created by Chaitanya for Beginnersbook.com
  3. */
  4. package beginnersbook
  5. fun main(args : Array<String>){
  6. println("Number range:")
  7. for(num in 1..4){
  8. println(num)
  9. }
  10. println("Character range:")
  11. for(ch in 'A'..'E'){
  12. println(ch)
  13. }
  14. }

输出:

Kotlin 范围 - 图1

检查范围中的元素

我们还可以检查范围内是否存在特定元素。让我们看一下如何借助一个简单的例子来做到这一点。

  1. package beginnersbook
  2. fun main(args : Array<String>){
  3. val oneToTen = 1..10
  4. println("3 in oneToTen: ${3 in oneToTen}")
  5. println("11 in oneToTen: ${11 in oneToTen}")
  6. }

输出:

  1. 3 in oneToTen: true
  2. 11 in oneToTen: false

Kotlin 范围:rangeTo()downTo()函数

而不是..我们可以使用这些函数rangeTo()downTo()rangeTo()用于递增顺序而downTo()用于递减顺序。

  1. /**
  2. * created by Chaitanya for Beginnersbook.com
  3. */
  4. package beginnersbook
  5. fun main(args : Array<String>){
  6. val oneToFive = 1.rangeTo(5)
  7. val sixToThree = 6.downTo(3)
  8. println("rangeTo:")
  9. for(x in oneToFive){
  10. println(x)
  11. }
  12. println("downTo")
  13. for(n in sixToThree){
  14. println(n)
  15. }
  16. }

输出:

Kotlin 范围 - 图2

Kotlin 范围步长

step()函数的帮助下,我们可以定义值之间的间隔。默认情况下,step的值为 1,因此当我们创建范围1..10时,它是1,2,3,... 10。但是如果我们想要一个像 3 这样的特定区间,那么我们可以像这样定义1..10.step(3)这样的范围,这样的值就是1 4 7 10。让我们举一个例子。

  1. package beginnersbook
  2. fun main(args : Array<String>){
  3. val oneToTen = 1..10
  4. val odd = oneToTen.step(2)
  5. for(n in odd){
  6. println(n)
  7. }
  8. }

输出:

  1. 1
  2. 3
  3. 5
  4. 7
  5. 9

Kotlin 范围反转

我们可以使用reverse()函数反转 Kotlin 中的范围。

  1. /**
  2. * created by Chaitanya for Beginnersbook.com
  3. */
  4. package beginnersbook
  5. fun main(args : Array<String>){
  6. val oneToFive = 1..5
  7. for (n in oneToFive.reversed()){
  8. println(n)
  9. }
  10. }

输出:

Kotlin 范围 - 图3