kotlin 可组合lambda:它们是在每次重组时创建的吗?是否有一些聪明的优化?

cyvaqqii  于 2023-06-24  发布在  Kotlin
关注(0)|答案(1)|浏览(92)

在这个片段中

@Composable
fun Toolbar(content: @Composable () -> Unit) { ... }

fun slotBuilder(text: String): @Composable () -> Unit { 
  return { Text(text) } 
}

@Composable
fun Screen() {
  Toolbar { Text("hello") } // A
  Toolbar(content = slotBuilder("hello")) // B
}

AB在分配方面是等价的吗?在每种情况下,在Screen()的每次重组(函数调用)时都会创建一个新的lambda,或者我错了吗?

pw9qyyiw

pw9qyyiw1#

在案例A中,每次重新组合Screen时都会创建一个新的lambda,因为它是一个内联函数。
在情况B中,lambda在对slotBuilder的初始调用期间创建一次,并在随后的Screen重组中重用。

相关问题