如何在一行中输入五个以上的值?

时间:2019-10-16 13:59:34

标签: kotlin destructuring

我需要在Kotlin的一行上输入9个值:

fun readInts() = readLine()!!.split(' ').map { it.toInt() }

fun main(){
    val (x, y, z, f, e, m, s, t, c) = readInts() 

但是当我尝试执行此操作时,出现错误:

Error:(5, 30) Kotlin: Destructuring declaration initializer of type List<Int> must have a 'component6()' function

预先感谢您的帮助)

1 个答案:

答案 0 :(得分:3)

Kotlin仅在- (CGFloat)sectionIndexWidthForSectionIndexTitles:(NSArray *)titles { return 100; } 上定义component1()component5(),用于分解,因此限制了您的操作。

但是,由于有了Extension Functions,我们可以定义自己的:

List

(依此类推...)

然后这应该起作用:

operator fun <T> List<T>.component6(): T = this[5]
operator fun <T> List<T>.component7(): T = this[6]
operator fun <T> List<T>.component8(): T = this[7]
operator fun <T> List<T>.component9(): T = this[8]

请注意,如果您的组件为null,则此操作可能会失败。