表达式主体中的 Kotlin null 和 kotlin.Unit 混淆

标签 kotlin generics

谁能解释以下代码片段的结果?为什么第一个函数调用返回 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/

相关文章:

ios - 快速更改 UIEdgeInsets 的颜色

java - 如何使用 Java 泛型编写管道类

android - 如何使用 Kotlin 在 Android 中共享图像?

android - 如何显示在回收 View 中选中的复选框总数

android - 如何为 Kotlin 和 Android 设置 Mockito

kotlin - 如何使用 toString 扩展数据类

database - 从数据库获取数据并填充数组的Golang抽象函数

java - 如何使这个 Java 方法变得通用

java - Spring 4对抽象泛型类的依赖注入(inject)不起作用

android - 在 JetPack Composable 中观察 LiveData