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

时间:2017-10-29 16:15:16

标签: kotlin

我有一个Mutable的对应列表,我想减少第一个条目的值,所以我的条件是我的通过(更改):

innodb_temp_data_file_path

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

1 个答案:

答案 0 :(得分:5)

与所有实体一样,问题出现了可变性。

在您的情况下,您可以使用一对新值更新列表条目。

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)