为什么 2 个 kotlin 降序 IntRanges 相等?
Why are 2 kotlin descending IntRanges equal?
看来 kotlin 认为不同值的降序 IntRanges 是相等的。是不是都被认为无效了?
@Test
fun abc() {
var a:IntRange = (1..2)
var b:IntRange = (1..3)
println(a==b) // prints false
var c:IntRange = (10..1)
var d:IntRange = (9..1)
println(c==d) // prints true
println(c) // prints 10..1
println(d) // prints 9..1
}
IntRange.isEmpty
的文档说:
The range is empty if its start value is greater than the end value.
因此,10..1
和 9..1
都将是空范围,并且 empty ranges are considered equal in the current implementation of equals
.
如果您想要一个从 10 向下到 1 的序列,您可能正在寻找 downTo
中缀函数。请注意,这为您提供了更通用的 IntProgression
,而不是 IntRange
.
val from10To1 = 10 downTo 1
看来 kotlin 认为不同值的降序 IntRanges 是相等的。是不是都被认为无效了?
@Test
fun abc() {
var a:IntRange = (1..2)
var b:IntRange = (1..3)
println(a==b) // prints false
var c:IntRange = (10..1)
var d:IntRange = (9..1)
println(c==d) // prints true
println(c) // prints 10..1
println(d) // prints 9..1
}
IntRange.isEmpty
的文档说:
The range is empty if its start value is greater than the end value.
因此,10..1
和 9..1
都将是空范围,并且 empty ranges are considered equal in the current implementation of equals
.
如果您想要一个从 10 向下到 1 的序列,您可能正在寻找 downTo
中缀函数。请注意,这为您提供了更通用的 IntProgression
,而不是 IntRange
.
val from10To1 = 10 downTo 1