Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不';Kotlin对中的条目是可变的吗?_Kotlin - Fatal编程技术网

为什么不';Kotlin对中的条目是可变的吗?

为什么不';Kotlin对中的条目是可变的吗?,kotlin,Kotlin,我有一个对的可变列表,我想减少第一个条目的值,以便我的条件我的通过(更改): 但是Pair类不允许我这样做,除了创建自己的Pair之外,还有其他解决方法吗?为什么会这样呢?与所有实体一样,可变性也会出现问题 在您的情况下,您可以使用一对新的值更新列表条目 val newPair = oldPair.copy(first = oldPair.first-1) 或者直接使用长度为2的数组,而不是intArrayOf(0,0)。因此,您可以直接访问元素 while(n > 0) { i

我有一个对的可变列表,我想减少第一个条目的值,以便我的条件我的通过(更改):


但是Pair类不允许我这样做,除了创建自己的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++
}
您甚至可以为
IntArray
类型定义扩展值
first
second
,并像以前一样使用它

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

你能添加你实例化sibice?Val-sibice的部分:Mutabelist= Mutabelist:(m){对(0,0)},我通过制作我自己的对类来解决这个问题,但是这超出了我的观点,不管怎样,我自己做了一对(PAR):类PAR构造函数(var第一:T1,var第二:T2),你总是可以定义你自己的<代码>数据类突变对。(var first:T,var second:U)“除了创建我自己的配对之外,还有其他配对吗”我通过这样做解决了问题,但我想检查一下是否存在替代性。这是一种情况,因为这是传统和期望,通常也是函数式编程的要求。
val IntArray.second get() = get(1)
var IntArray.first
    set(value) = set(0, value)
    get() = get(0)