gpt4 book ai didi

kotlin - 结果一直在说: “Type mismatch: inferred type is Unit but String was expected”

转载 作者:行者123 更新时间:2023-12-02 13:27:01 25 4
gpt4 key购买 nike

我在play.kotlinlang.org上运行了以下代码,但结果一直在说:Type mismatch: inferred type is Unit but String is expected(我对原始示例代码进行了一些更改)
我不知道为什么它的推断类型是Unit。
我以为我宣布了返回类型为String。
println()单元的类型还是我刚刚编写了整个ring函数?

fun main(){
val squid:(String)->String={str->println("I'm $str")}
//ring(::rabbit)
ring(squid)
}

fun rabbit(str:String):String{
println("I'm $str")
return str
}

fun ring(carrot:(String)->String){
carrot("a appetiting squid")
}

最佳答案

正如Animesh指出的那样,您不会返回Stringsquidval squid:(String)->String定义一个lambda,它接受一个String并返回一个String

{str->println("I'm $str")}
Lambda将返回Lambda的最后一行的值,但在这种情况下,最后一个值为 println("I'm a $str") println返回 Unit,或更确切地说,它不返回任何内容(这是 Unit表示的)。因此,如果您仍然想打印String并返回它,请像这样重写它:
{ str -> 
println("I'm $str")
str // This string is the value that will now be returned.
}

关于kotlin - 结果一直在说: “Type mismatch: inferred type is Unit but String was expected”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63268467/

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