gpt4 book ai didi

android - List 类型的解构声明初始值设定项必须具有 'component6()' 函数

转载 作者:行者123 更新时间:2023-12-02 13:20:37 24 4
gpt4 key购买 nike

考虑这个将字符串列表转换为某个对象的方法:

/**
* Creates an Item from the provided list of strings
*/
private fun createFromStrings(strings: List<String>): Item {
val (str1, str2, str3, str4, str5) = strings

// some string manipulation
return Item(someString)
}

将第 6 个变量添加到解构声明会产生以下错误:

Destructuring declaration initializer of type List must have a 'component6()' function

我可以从中推断出 List 可以立即解构为最多 5 个变量(也许是出于方便考虑)。

有这方面的相关文档吗? Collections.kt 中是否有一些提示使这一点显而易见?或者它只是一个例子……看看什么有效,接受它并继续你的生活?

最佳答案

正如@gpunto 所说的那样,List 没有开箱即用的 component6() 方法,因此默认情况下您最多可以解构 5 个元素。但是,如果您真的需要/想要拥有第六个(或第七个或第 n 个)组件,您始终可以编写自己的扩展:

operator fun <T> List<T>.component6(): T = get(5)

fun main() {
val aList = listOf("one", "two", "three", "four", "five", "six")
val (_, _, _, _, _, s6) = aList // no compilation error
println(s6) // prints "six"
}

关于android - List<String> 类型的解构声明初始值设定项必须具有 'component6()' 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57035733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com