kotlin - Jetpack Owl 示例中的未知语法

kotlin - unknown syntax in Jetpack Owl Example

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

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

即使我可以自己使用代码,我也确实无法解码这个 val 声明的语法。 我无法在 kotlinlang.org 站点中找到任何内容(我找到的最近的主题是关于解构声明的)。 有人可以帮助我理解它吗and/or 指向相关文档?

正如您在问题中提到的那样,此语法是解构的,明确表示为

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

这需要目标 class 的 2 个组件。 (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 作为参数和 returns 单位的 lambda。

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

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

因此,您使用此 lambda 设置的任何内容都会分配给值 T