"directly from the function body" Kotlin 中是什么意思?



Kotlin关于内联函数的文档说

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

什么是";直接从功能体";意思是内联函数如何调用lambdas?你能给我举几个具体的例子吗?

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

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

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

非常感谢。

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

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

相关内容

  • 没有找到相关文章

最新更新