Kotlin - 无法通过解构声明为 lateinit vars 分配新值

ser*_*0ne 3 kotlin

以下 Kotlin 代码有效

val (x, y) = getSomeXYPair()
Run Code Online (Sandbox Code Playgroud)

但是你不能用lateinit全局变量来做到这一点

class Foo {

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

    init {
        (x, y) = getSomeXYPair()
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道我是否做错了什么,或者这在 Kotlin 中不受支持?

Ale*_*hin 6

你不能用任何类型的变量来做到这一点,无论是否本地:

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

    (x, y) = getSomeXYPair()
}
Run Code Online (Sandbox Code Playgroud)

这种语法在 Kotlin 中根本无效。您需要使用var或开始解构声明valhttps : //kotlinlang.org/docs/reference/multi-declarations.html#destructuring-declarations

也就是说,撇开lateinit诸如Int.