首页 > 解决方案 > Kotlin - 无法通过解构声明为lateinit vars分配新值

问题描述

以下 Kotlin 代码有效

val (x, y) = getSomeXYPair()

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

class Foo {

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

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

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

标签: kotlin

解决方案


您不能使用任何类型的变量来执行此操作,无论是否为本地变量:

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

    (x, y) = getSomeXYPair()
}

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

也就是说,撇开lateinit原始类型(例如Int.


推荐阅读