gpt4 book ai didi

kotlin - "Overload resolution ambiguity error"已通过另一个重载解决

转载 作者:行者123 更新时间:2023-12-03 04:41:09 30 4
gpt4 key购买 nike

我看到了这个question .

怎么加了这行

fun Int.toUpperCase() = ""

这个问题

Error:(6, 16)
Overload resolution ambiguity:
@InlineOnly public inline fun Char.toUpperCase(): Char defined in kotlin.text
@InlineOnly public inline fun String.toUpperCase(): String defined in kotlin.text

要离开这段代码吗?

fun main(args: Array<String>){
var ab: String? = "hello"
ab = null
println(ab?.toUpperCase())
}

针对引用问题给出的答案是有道理的,它只是没有回答这里发生的事情。

最佳答案

如果您在文件中再次定义 fun String.toUpperCase() = "",它甚至可以工作。编译器选择使用本地定义的函数,并且不再考虑不明确的函数。由于 ab 变为 Nothing? 并且这是所有可空类型的子类型,任何接收者都会使这种情况发生。

此处显示:

fun main(args: Array<String>) {
println("hello".substringBefore("e"))
}

fun String.substringBefore(e: String) = "hey"
stdlib 中的

substringBefore 将不会被调用,因为使用了本地定义的扩展。

关于kotlin - "Overload resolution ambiguity error"已通过另一个重载解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47903589/

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