【问题标题】:Assigning Pairs to Already Defined Vars in Kotlin将对分配给 Kotlin 中已定义的变量
【发布时间】:2021-11-22 23:03:37
【问题描述】:

我正在尝试从函数返回一对并将其分配给 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.

【问题讨论】:

    标签: function kotlin var


    【解决方案1】:

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

    查看grammar 可以清楚地看出assignment 只接受directlyAssignableExpression(例如simpleIdentifier)。 declaration 改为接受 multiVariableDeclaration

    【讨论】:

      【解决方案2】:

      我看不出这不起作用的原因,但显然它不起作用。在docs 中,我也没有看到任何提及这样做的内容。如果达成共识,通常会添加功能 1. 人们认为需要这些功能。 2. 他们不会破坏其他东西/或令人困惑。所以我猜其中一个条件没有满足,或者没有人要求。

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

      在那之前,我猜你会被以下其中一种方式所困扰:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多