我喜欢Kotlin的解构功能,它们帮助我整理代码并专注于基本功能。
我遇到一个案例,我无法弄清楚正确的语法,如何通过破坏重新分配变量?
var (start, end) = startEndDate(198502)
// intellij neither accept this ...
start, end = startEndDate(200137)
// ... nor this
(start, end) = startEndDate(200137)
答案 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))