考虑这个将字符串列表转换为某个对象的方法:
/**
* 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)
}
Run Code Online (Sandbox Code Playgroud)
将第六个变量添加到解构声明中会产生以下错误:
List 类型的解构声明初始值设定项必须具有“component6()”函数
我可以从中推断出它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"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4034 次 |
| 最近记录: |