考虑以下将字符串列表转换为某些对象的方法:
/**
* 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个变量会产生以下错误:
List类型的解构声明初始化程序必须具有一个 'component6()'函数
由此我可以推断出List
可以被分解为最多5个变量(可能是出于方便的目的)。
是否有相关文件?在Collections.kt中是否有一些使这一点显而易见的提示?还是只是一种情况..看看有什么用,接受它,然后继续生活?
答案 0 :(得分:0)
正如@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"
}