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
试图找到一些关于如何 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