【发布时间】:2020-12-22 01:23:08
【问题描述】:
我有一个返回Pair的函数:
fun createTuple(a: Int, b: Int): Pair<Int, Int> {
return Pair(a, b)
}
我想用这个函数初始化变量a和b,然后在循环中重新赋值:
var (a, b) = createTuple(0, 0)
for (i in 1..10) {
createTuple(i, -i).let{
a = it.first
b = it.second
}
println("a=$a; b=$b")
}
使用let 似乎很尴尬。有没有更好的方法来解开 Pair 内循环?
以下行无法编译:
(a, b) = createTuple(i, -i)
a, b = createTuple(i, -i)
【问题讨论】:
-
不支持解构赋值。在几年前的跟踪器上有一个未解决的问题。如果您使用
run而不是let,则可以删除its。 -
你的问题很不清楚你想要实现什么。在这里,你可以做
for (i in 1..10) { a = i; b = -i } -
@SiddharthSharma 这是一个最小的例子。我的问题是关于解构分配的,Tenfour04 回答了它
-
@Sergey 哈哈好吧,那么你的问题可能会更小。例如,“如何将
Pair对象解构为两个现有变量”