Kotlin 范围函数实际上是 java 匿名的 类?

Kotlin scope functions are actually java anonymous classes?

我目前正在处理一些旧的 Java 编写的 Android 项目,但在我不太熟悉的 Kotlin 中编写新部分。我需要一些方法来解包可为 null 的对象(Swift 中 if let unwrappedMyVar = myVar else {} 的类似物),为此我使用 myVar?.let {} 范围函数,它解包 myWar 并执行块以防它是不为空。但是现在我真的很好奇这些作用域函数是如何在 Kotlin 中实现的,实际上是编译成 Java 匿名的 类 吗?如果是这样,那么它可能会导致与 Java 匿名 类 相同的问题。而且很容易造成泄漏
谢谢!
亲切的问候,
Andre

letapplyrunalso 等作用域函数以及 Kotlin 标准库中的更多函数是 inline functions,这意味着您传递给它们的 lambda 在它们的主体中内联,然后转换后的主体在调用站点内联。

使用范围函数,生成的字节码基本上等同于仅声明一个变量并在显式 if-null-check 后使用它所获得的字节码。