Kotlin作用域函数是异步的还是同步的



Kotlin作用域函数letapplyalsorun看起来像异步回调。但它们似乎是按顺序执行的。这是怎么做到的?实施细节是什么?

作用域函数只是为了让代码更容易读写。它们不是异步回调。

scope函数没有引入任何新的技术功能,但它们可以使代码更加简洁易读。

实际上,它们是内联函数。例如,apply是这样声明的:

// Note "inline" modifier
public inline fun <T> T.apply(block: T.() -> Unit): T {
block()
return this
}

inline函数内联到它们的调用站点。例如,文档中的代码:

val adam = Person("Adam").apply { 
age = 20
city = "London"
}
println(adam)

在编译过程中变成这样-apply调用完全消除

val temp = Person("Adam")
temp.age = 20
temp.city = "London"
val adam = temp
println(adam)

最新更新