在这个片段中
@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
}
A
和B
在分配方面是等价的吗?在每种情况下,在Screen()
的每次重组(函数调用)时都会创建一个新的lambda,或者我错了吗?
1条答案
按热度按时间pw9qyyiw1#
在案例A中,每次重新组合Screen时都会创建一个新的lambda,因为它是一个内联函数。
在情况B中,lambda在对slotBuilder的初始调用期间创建一次,并在随后的Screen重组中重用。