kotlin - 为什么 2 个 kotlin 降序 IntRanges 相等?

标签 kotlin range equals

看来 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

关于kotlin - 为什么 2 个 kotlin 降序 IntRanges 相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68362359/

相关文章:

ruby - 了解 ruby 范围

python 时间范围验证器

c++ - 二项式系数函数 C++ 的不同输出

java - .equal 不适用于列表列表,即使它们相等

Java HashMap 返回值不符合我对 equals 和 hashcode 的理解

android - 从右到左格式化字符串以获取货币值

kotlin - 比较 Kotlin 中没有 ID 的数据类

带有 Kotlin 和 Spring BootPost 的 REST API 返回空对象

kotlin - Kotlin空安全性和 bool 表达式

MySQL 等于运算符截断值并且无法按预期工作