通过解构重新分配变量

时间:2016-09-01 13:46:53

标签: kotlin

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

我遇到一个案例,我无法弄清楚正确的语法,如何通过破坏重新分配变量?

var (start, end) = startEndDate(198502)

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

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

1 个答案:

答案 0 :(得分:11)

从语言的角度来看,在解构声明中声明的变量只是单独的独立变量,而目前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))