在 Kotlin 中将对分配给已定义的变量

Assigning Pairs to Already Defined Vars in Kotlin

我正在尝试 return 从一个函数中提取一对并将其分配给已在 Kotlin 中定义的变量。
到目前为止,我看到从函数接收到的对的方式是:

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

是否可以将已定义的变量分配给该对?类似于:

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

我看不出为什么这行不通,但显然行不通。在 docs 中,我也没有看到任何提及这样做的内容。如果达成共识,通常会添加功能 1. 人们认为它们是必需的。 2. 他们不会破坏其他东西/或造成混淆。所以我猜其中一个条件没有被满足,或者没有人要求它。

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

到那时,我猜你会被以下其中一种方法困住:

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

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

不幸的是,据我所知这是不允许的。当前的 Kotlin 语法允许 destructuring declarations,但只有当您当时 声明 变量时才有效。在您的示例中,您声明了上面的变量并且只想分配一个值。

正在查看 grammar makes it clear that assignment only accepts a directlyAssignableExpression (such as a simpleIdentifier). A declaration instead accepts a multiVariableDeclaration