Kotlin-Can';t通过解构声明将新值分配给lateinit变量
下面的Kotlin代码起作用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不支持这一点?您不能使用任何类型的变量
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}
。