在 Kotlin 中创建专属范围

问题描述 投票:0回答:4

我刚刚开始使用 Kotlin。我想创建一个从

1
n
的范围,其中
n
排除。我发现 Kotlin 有范围,我可以按如下方式使用它们:

1..n

但这是一个包容范围,其中包括

1
n
。如何创建独家范围?

kotlin range comparable
4个回答
116
投票

您可以使用 Kotlin stdlib 中的 until 函数:

for (i in 1 until 5) {
    println(i)
}

将打印:

1
2
3
4

14
投票

2022年更新:请使用内置功能直到


旧答案:

不确定这是否是最好的方法,但您可以定义一个

Int
扩展,它创建从(下限)到(上限 - 1)的
IntRange

fun Int.exclusiveRangeTo(other: Int): IntRange = IntRange(this, other - 1)

然后这样使用:

for (i in 1 exclusiveRangeTo n) { //... }

在这里您可以找到有关范围如何工作的更多详细信息。


5
投票

在 Kotlin 1.8 及更高版本中使用新的

..<
(rangeUntil) 运算符:

for (i in 1 ..< 5) {
    println(i) // 1, 2, 3, 4
}

它还开启了

until
无法完成的可能性:

val floatRange = 0f ..< 1f
val dateRange = LocalDate.of(2022, 1, 1) ..< LocalDate.of(2023, 1, 1)
val stringRange = "1z" ..< "9a"
// OR anything implementing Comparable

请参阅 Kotlin 官方视频介绍

rangeUntil
运算符


0
投票

最向后兼容的方式是使用 kotlin 的

until
运算符。例如

for (val i in 0 until 5){
   /*do stuff*/
}
© www.soinside.com 2019 - 2024. All rights reserved.