繁体   English   中英

Kotlin scope 函数实际上是 java 匿名类?

[英]Kotlin scope functions are actually java anonymous classes?

我目前正在研究一些旧的 Java 编写的 Android 项目,但在 Kotlin 中编写新部分,我不太熟悉。 I need some way to unwrap nullable object(analogue of if let unwrappedMyVar = myVar else {} in Swift), to do this I use myVar?.let {} scope function which unwraps myWar and executes block in case it is not null. 但是现在我其实很好奇那些scope函数是如何在Kotlin中实现的,实际上是编译成Java匿名类吗? 如果是这样,那么它可能会导致与 Java 匿名类相同的问题。 而且很容易造成泄漏
谢谢 !
亲切的问候,
安德烈

scope 函数,如letapplyrunalso ,以及 Kotlin 标准库中的更多函数,都是inline函数,这意味着您传递给它们的 lambda 在它们的主体中内联,然后转换后的主体在呼叫站点内联。

使用 scope 函数,生成的字节码几乎等同于在显式if -null 检查后声明一个变量并使用它所得到的字节码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM