我有一个包含五个以上元素的JSON数组。
尝试执行以下操作:
val (a, b, c, d, e, f, g) = JSON.array()
这将引发以下错误:
Kotlin: Destructuring declaration initializer of type List<Letter> must have a 'component6()' function
Kotlin: Destructuring declaration initializer of type List<Letter> must have a 'component7()' function
我不想编写以下代码:
val a = array[0], b = array[1] ...
答案 0 :(得分:0)
我通过声明其他 componentN 函数来解决该问题:
operator fun List<Any>.component6() = this[5]
operator fun List<Any>.component7() = this[6]
如果我们要使用 Destructuring声明,则需要使用data
关键字标记该类,或为需要获取的任意数量的值提供component1, component2 ... componentN
函数。
对于 List 类,生成的_Collections.kt
文件仅 包含compenentN
个函数,直到compenent5
。
答案 1 :(得分:0)
componentX
的{{1}}函数在List
包中定义。您将find it用于组件1到5。如果您想拥有更多组件,则可以基于已经提供的实际实现创建如下扩展功能:
kotlin.collections