为什么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++ }
你甚至可以定义first
和second
IntArray
类型的扩展值,并像以前一样使用它。
val IntArray.second get() = get(1) var IntArray.first set(value) = set(0, value) get() = get(0)