为什么不';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)