Kotlin-Can';t通过解构声明将新值分配给lateinit变量

Kotlin-Can';t通过解构声明将新值分配给lateinit变量,kotlin,Kotlin,下面的Kotlin代码起作用 val (x, y) = getSomeXYPair() 但是您不能使用lateinitglobal vars来实现这一点 class Foo { private lateinit var x: Int private lateinit var y: Int init { (x, y) = getSomeXYPair() } } 我只是想知道我是做错了什么,还是Kotlin不支持这一点?您不能使用任何类型的变量

下面的Kotlin代码起作用

val (x, y) = getSomeXYPair()
但是您不能使用
lateinit
global vars来实现这一点

class Foo {

    private lateinit var x: Int
    private lateinit var y: Int

    init {
        (x, y) = getSomeXYPair()
    }
}

我只是想知道我是做错了什么,还是Kotlin不支持这一点?

您不能使用任何类型的变量,无论是本地变量还是非本地变量:

fun main() {
    var x : Int = 1
    var y : Int = 2

    (x, y) = getSomeXYPair()
}
此语法在Kotlin中完全无效。您需要使用
var
val
开始解构声明:


也就是说,抛开
lateinit
Int

等基本类型上不受支持这一事实,这可能适用于类似python的语言
a=None;b=无;(a,b)=5,6;印刷品(a、b),但它没有在KotlinA中实现。解构声明并不总是以
var
val
开头:如果您解构lambda参数,例如
(1到2)。让{(key,value)->key+value}