为什么 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..19..1 都将是空范围,并且 empty ranges are considered equal in the current implementation of equals.

如果您想要一个从 10 向下到 1 的序列,您可能正在寻找 downTo 中缀函数。请注意,这为您提供了更通用的 IntProgression,而不是 IntRange.

val from10To1 = 10 downTo 1