You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin 2.0中UInt?与UInt的相等性判断不符合预期

Kotlin 2.0.0编译器的UInt比较异常行为

在Kotlin 2.0.0编译器中出现异常行为:当使用如下代码时,即使idx为2U(与列表中元素的a值匹配),lambda调用始终返回null。

class A(val a: UInt?)

val list = listOf(A(2U))

fun main() {
    val lambda = { idx: UInt -> list.firstOrNull { it.a == idx } }
    for (i in 0U ..< 6U) {
        val e = lambda(i)
        println("result: ${e?.a}") // 始终输出null
    }
}

奇怪的是,交换比较双方的顺序后,代码可正常工作:当idx为2U时,能正确匹配到列表中的元素并输出对应值,其他情况输出null。

class A(val a: UInt?)

val list = listOf(A(2U))

fun main() {
    val lambda = { idx: UInt -> list.firstOrNull { idx == it.a } }
    for (i in 0U ..< 6U) {
        val e = lambda(i)
        println("result: ${e?.a}") // 符合预期工作
    }
}

该代码在Kotlin 1.9.x版本中可正常运行,迁移至Kotlin 2.0后出现此问题,推测这并非预期行为,目前未在官方文档中找到相关说明。

内容的提问来源于stack exchange,提问作者Josef Filzmaier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:35:04