我喜欢Kotlin的解构功能,它们帮助我整理代码并专注于基本功能。

我遇到了无法弄清正确语法的情况,如何通过销毁来重新分配变量?

var (start, end) = startEndDate(198502)

// intellij neither accept this ...
start, end = startEndDate(200137)

// ... nor this
(start, end) = startEndDate(200137)

最佳答案

从语言的 Angular 来看,在解构声明中声明的变量只是单独的独立变量,目前Kotlin还没有提供在单个语句中分配多个变量的方法。

您只能再次分解表达式,并一一分配变量:

var (start, end) = startEndDate(198502)

val (newStart, newEnd) = startEndDate(200137)
start = newStart
end = newEnd

如果您需要证明这两个变量具有某些特殊含义并应一起分配,则可以声明一个本地函数,如下所示重新分配它们:
var (start, end) = startEndDate(198502)
fun setStartEnd(pair: Pair<SomeType, SomeType>) { start = pair.first; end = pair.second }

setStartEnd(startEndDate(200137))

08-07 00:46