在Kotlin中给已经定义的变量赋值



我试图从函数返回一对并将其分配给已经定义的变量,在Kotlin
到目前为止,我看到的从函数接收到的对是:

val/var (thing1, thing2) = FunctionReturningPair()

是否可以将已定义的变量赋值给pair?比如:

var thing1: String
var thing2:int
//do other things here
(thing1, thing2) = FunctionReturningPair() 
//note that thing1 and thing2 were ALREADY DEFINED.

不幸的是,据我所知,这是不允许的。当前的Kotlin语法允许解构声明,但只有在declare时才有效。那时候的变量。在你的例子中,你声明了上面的变量,只是想分配一个值。

查看语法可以清楚地看出,assignment只接受directlyAssignableExpression(如simpleIdentifier)。declaration接受multiVariableDeclaration

我看不出为什么不能工作,但显然它不能。在文档中,我没有看到任何关于这样做的提及。通常情况下,如果大家一致认为1。人们认为他们是被需要的。和2。它们不会破坏其他东西或造成混乱。所以我猜其中一个条件没有满足,或者没有人要求它。

如果你真的想要它,它可能值得检查你的跟踪,看看是否有人要求它。如果他们投票赞成,如果没有,写一个功能请求。

在那之前,我猜你只能用下面的一种方法:

val p = functionReturningPair()
thing1 = p.first
thing2 = p.second

functionReturningPair().let { (first, second) -> thing1 = first; thing2 = second }

最新更新