gpt4 book ai didi

Kotlin 重载解析标准库中的歧义

转载 作者:行者123 更新时间:2023-12-01 13:50:34 24 4
gpt4 key购买 nike

在 Kotlin 0.12.1230 中,已弃用的 API 似乎阻止了其替代品的使用。

例如,编译器会提示以下代码片段,因为它“无法在未完成类型推断的情况下选择......候选人”

val seq = sequenceOf("1")
val first = seq.firstOrNull()

候选人是 Sequence<T>.firstOrNullStream<T>.firstOrNull两者都具有相同的签名和 Sequence<T>扩展 Stream<T> .此外, Stream<T>不赞成使用 Sequence<T> .

尝试解决类型推断歧义,如下所示,会导致编译器提示“重载解析歧义”。
val seq = sequenceOf("1")
val first = seq.firstOrNull<String?>()

在我们等待已弃用的 API 完全消失时,有什么方法可以解决歧义?

似乎转换为最不具体的类型,在这种情况下是不推荐使用的类型 Stream<T> , 完成了它,但是现在我的代码在我不想这样做时明确依赖于已弃用的类型:
val seq = sequenceOf("1")
val first = (seq as Stream<String>).firstOrNull()

希望有更好的方法吗?

最佳答案

这似乎是由我的类路径上 Kotlin stdlib 的多个冲突版本引起的(由 Gradle IntelliJ 集成中的长期缺陷引起)。一旦解决了版本冲突,编译器就不再提示。

关于Kotlin 重载解析标准库中的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32019089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com