kotlin 中的“直接来自函数体”是什么意思?

ltoibq93578

关于内联函数的Kotlin 文档

请注意,一些内联函数可能会调用作为参数传递给它们的 lambdas,而不是直接从函数体中调用,而是从另一个执行上下文调用,例如本地对象或嵌套函数。在这种情况下,lambdas 中也不允许非本地控制流。为了表明这一点,需要使用 crossinline 修饰符标记 lambda 参数:

“直接来自函数体”是什么意思?内联函数如何调用 lambdas?你能给我一些具体的例子吗?

该文档给出了一个从另一个执行上下文调用 lambdas 的内联函数示例:

inline fun f(crossinline body: () -> Unit) {
    val f = object: Runnable {
        override fun run() = body()
    }
    // ...
}

但是,什么是“另一个执行上下文”?内联函数如何从另一个执行上下文调用 lambdas?

非常感谢。

面包

“直接来自函数体”意味着 lambda 将仅作为执行内联函数的一部分执行。如果 lambda 存储在某个属性中或传递到其他地方,则认为它是间接执行的。

请注意,在示例中,lambda 被传递给Runnable对象,它不是由f函数直接执行的

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

<ClassName>。()在Kotlin中是什么意思?

“带”在Kotlin中是什么意思?

Kotlin中的“ _”符号是什么意思?

AT符号在KOTLIN中是什么意思

Kotlin 中的 javaClass 是什么意思?

带T.()的Kotlin函数签名是什么意思?

带点的 Kotlin 函数声明,是什么意思?

Kotlin 函数前的括号是什么意思?

“什么时候”在Kotlin中是什么意思?

在Kotlin中调用函数findViewById后,尖括号语法是什么意思

关键字对象在Kotlin中是什么意思?

在 Kotlin 中 yield(i) 是什么意思?

Kotlin 中的“lambda@”是什么意思

在Kotlin中,“单位=单位”是什么意思?

XXX<U, in T: U> 在 kotlin 中是什么意思

Kotlin版本中的`M`是什么意思?

在Kotlin中“ val XXX = Class {...”是什么意思?

在Kotlin中,此代码的“懒惰”是什么意思?

这个“at”/“@”符号在 Kotlin 中是什么意思?

消费Kotlin Channel是什么意思?

Kotlin:“ return @”是什么意思?

是什么?在作业左侧使用时在Kotlin中是什么意思?

Kotlin:注解 (acc: S, T) -> S 是什么意思?

IntelliJ / Kotlin:“ ^ use”提示是什么意思?

livedata observable Kotlin 的 lambda 表达式中的“让”是什么意思

在Build.gradle中ext.kotlin_version ='+'是什么意思?

Kotlin中的“ ClassInstance。[Someclass :: class.java]”是什么意思?

header / impl关键字在kotlin中是什么意思?

片刻之后直接来到是什么意思?