仅使用一个已声明参数的Kotlin解构声明
根据,声明的组件应与右侧的组件数量相匹配:仅使用一个已声明参数的Kotlin解构声明,kotlin,destructuring,Kotlin,Destructuring,根据,声明的组件应与右侧的组件数量相匹配: 只要可以调用所需数量的组件函数,任何东西都可以位于解构声明的右侧 但是,我发现,即使左侧的组件数量与赋值语句右侧的组件数量不一样,这种方法也可以工作 fun main() { val (firstOnly) = Pair("key", "value") println("firstOnly=${firstOnly}") } 这是合法的Kotlin还是一个bug?如果是合
只要可以调用所需数量的组件函数,任何东西都可以位于解构声明的右侧 但是,我发现,即使左侧的组件数量与赋值语句右侧的组件数量不一样,这种方法也可以工作
fun main() {
val (firstOnly) = Pair("key", "value")
println("firstOnly=${firstOnly}")
}
这是合法的Kotlin还是一个bug?如果是合法的,有参考资料吗
如果是合法的,有参考资料吗
说:
约定定义的一个特例是属性的分解声明[…]
此约定允许通过在构建过程中立即对属性进行分解来引入多个(一个或多个)属性来代替一个属性
它说的是“一个或多个”,所以是的,通过解构声明单个属性是允许的
还请注意,“可以对其调用所需数量的组件函数”并不意味着组件函数的数量必须等于所声明的属性的数量。让我们这样说:如果我有两个苹果,需要一个苹果。我有“规定数量的苹果”吗?答案显然是肯定的
如果您仍然不清楚,我认为规范会更好地说明:
对于每个标识符,对应的运算符函数组件k带有
如果K等于占位符在声明中的位置(从1开始),则调用K时不带参数
这意味着这些函数调用必须是有效的。是否存在其他组件功能与此无关
如果是合法的,有参考资料吗
说:
约定定义的一个特例是属性的分解声明[…]
此约定允许通过在构建过程中立即对属性进行分解来引入多个(一个或多个)属性来代替一个属性
它说的是“一个或多个”,所以是的,通过解构声明单个属性是允许的
还请注意,“可以对其调用所需数量的组件函数”并不意味着组件函数的数量必须等于所声明的属性的数量。让我们这样说:如果我有两个苹果,需要一个苹果。我有“规定数量的苹果”吗?答案显然是肯定的
如果您仍然不清楚,我认为规范会更好地说明:
对于每个标识符,对应的运算符函数组件k带有
如果K等于占位符在声明中的位置(从1开始),则调用K时不带参数
这意味着这些函数调用必须是有效的。其他组件功能是否存在与此无关。来自您链接到的文档:
只要可以调用所需数量的组件函数,任何东西都可以位于解构声明的右侧 它并没有说它必须匹配左边声明的变量数量,只是说它具有所需的数量 事实上,这在分解列表结构时非常有用:
val (first, second) = listOf(1, 2, 3, 4, 5)
文件包括:
如果此列表的大小小于1,则抛出一个索引AutofBoundsException
同样,它不会将列表大小限制为1。来自您链接到的文档:
只要可以调用所需数量的组件函数,任何东西都可以位于解构声明的右侧 它并没有说它必须匹配左边声明的变量数量,只是说它具有所需的数量 事实上,这在分解列表结构时非常有用:
val (first, second) = listOf(1, 2, 3, 4, 5)
文件包括:
如果此列表的大小小于1,则抛出一个索引AutofBoundsException
同样,它没有限制列表的大小为1。“只要所需数量的组件函数可以在其上调用,
Pair
具有component1()
,因此这里没有问题。”只要所需数量的组件函数可以在其上调用,Pair
具有component1()
,所以这里没有问题。谢谢这是我要找的。谢谢这是我要找的。