谁能解释以下代码片段的结果?为什么第一个函数调用返回 kotlin.Unit?
kotlin 版本 1.5.21,java11
fun <T> testMethod(data: String?): T? = data?.let { return null }
println(testMethod<String>(null)) // --> kotlin.Unit
fun <T> testMethod2(data: String?): T? = data?.let { null }
println(testMethod2<String>(null)) // --> null
为什么 kotlin 1.4.30 中的结果不同 - https://pl.kotl.in/uFZDE3O9e ?
最佳答案
这是一个编译器问题,已经在这里报告 - https://youtrack.jetbrains.com/issue/KT-47527 ,在 1.6.0-dev-970 中修复。
引用:https://github.com/jetbrains/kotlin/commit/ae608ea67fc589c4472657dc0317e97cb67dd158
关于表达式主体中的 Kotlin null 和 kotlin.Unit 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68578907/