为什么Kotlin Pair中的条目不可变?

我有一个MutableList对,我想递减第一个条目的值,所以我的条件我的通行证(变化):

while(n > 0) { if(sibice[i].first > 0) { sum += sibice[i].second //sibice[i].first-- will not compile n-- } else i++ } 

但是Pair类别不会让我这样做,除了创建自己的对之外,还有其他的解决方法,为什么还要这样呢?

像所有实体一样,问题随着可变性而出现。

在你的情况下,你可以用一对新的值来更新列表项。

 val newPair = oldPair.copy(first = oldPair.first-1) 

或者直接使用长度为2的数组,而不是intArrayOf(0, 0) 。 所以你可以直接访问元素。

 while(n > 0) { if(sibice[i][0] > 0) { sum += sibice[i][1] sibice[i][0]-- n-- } else i++ } 

你甚至可以定义firstsecond IntArray类型的扩展值,并像以前一样使用它。

 val IntArray.second get() = get(1) var IntArray.first set(value) = set(0, value) get() = get(0)