在Jetpack Owl示例中的未知语法



试图找到一些关于如何选择多个项目在懒惰列的方向,我在Owl Jetpack Compose示例(Onboarding.kt)中发现了以下代码。

...    
val (selected, onSelected) = remember { mutableStateOf(false) }
...

即使我能够自己使用代码,我也真的无法解码这个val声明的语法。我在kotlinlang.org网站上找不到任何东西(我找到的最近的主题是关于解构声明的)。有人能帮我理解它和/或给我指出相关文档吗?

这个语法是解构的,正如你在问题中提到的,它明确地作为

val (selected: Boolean, onSelected: (Boolean) -> Unit) = remember { mutableStateOf(false) }

需要目标类的两个组件。(val num1:Int, val num2:Int) = Pair(1,2)是一个例子

与MutableState

@Stable
interface MutableState<T> : State<T> {
override var value: T
operator fun component1(): T
operator fun component2(): (T) -> Unit
}

您需要添加T类型和一个以T为参数并返回单位的lambda。

在MutableState的SnapshotImpl源代码中,它被用作

override operator fun component2(): (T) -> Unit = { value = it }

所以你用这个lambda设置的任何东西都会被赋值给值T

最新更新