看来 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 - 为什么 2 个 kotlin 降序 IntRanges 相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68362359/