gpt4 book ai didi

Kotlin 解包函数编译器错误

转载 作者:行者123 更新时间:2023-12-05 00:15:58 27 4
gpt4 key购买 nike

有谁知道为什么下面的代码不起作用?

private fun wrapLogIfNeeded(buildMessageOnCurrentThread: Boolean, log: () -> String): () -> String
return if(buildMessageOnCurrentThread) {
val message = log() // Type mismatch: Required () -> String Found: Unit
{ message }
}
else {
log
}
}

但这确实:
private fun wrapLogIfNeeded(buildMessageOnCurrentThread: Boolean, log: () -> String): () -> String
return if(buildMessageOnCurrentThread) {
val message = lazy { log() }.value
{ message }
}
else {
log
}
}

最佳答案

那是因为语法歧义:

val message = log()
{ message }

这段代码被解析为 val message = log() { message } ,即 log用 lambda { message } 调用作为其论据。和声明 val message = ...有类型 Unit ,因此出现错误消息。

要解决它,您可以添加分号:
val message = log();
{ message }

关于Kotlin 解包函数编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43277235/

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