鉴于以下lambda:
val lambda: () -> Unit = null
Run Code Online (Sandbox Code Playgroud)
对于Kotlin来说,调用以下可为空的lambda会导致以下哪些调用?
lambda?.let { it() }
Run Code Online (Sandbox Code Playgroud)
与
lambda?.invoke()
Run Code Online (Sandbox Code Playgroud)
让我们问一下Kotlin编译器:
val lambda: (() -> Unit)? = null
lambda()
Run Code Online (Sandbox Code Playgroud)
编译器说:
Reference has a nullable type '(() -> Unit)?', use explicit '?.invoke()' to make a function-like call instead
Run Code Online (Sandbox Code Playgroud)
是的,这似乎?.invoke()
是必经之路。
尽管这对我(以及编译器)来说似乎也不错:
if (lambda != null) {
lambda()
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
613 次 |
最近记录: |