¿Por qué las inputs de Kotlin Pair no son mutables?

Tengo una MutableList de pares y me gustaría disminuir el valor de la primera input para que mi condición mi pase (cambio):

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

Pero la class Pair no me permite hacer eso, además de crear mi propio par, ¿hay alguna otra solución y por qué este es el caso?

Al igual que con todas las entidades, los problemas surgen con la mutabilidad.

En su caso, puede actualizar la input de la list con un nuevo par de valores.

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

O use directamente una matriz de longitud 2 en lugar de intArrayOf(0, 0) . Para que pueda acceder a los elementos directamente.

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

Incluso podría definir valores de extensión first y second para el tipo IntArray y usarlo igual que antes.

 val IntArray.second get() = get(1) var IntArray.first set(value) = set(0, value) get() = get(0) 
  • Kotlin: elementos condicionales durante la creación del map
  • Delegación de class parcial en Kotlin
  • kotlin oyentes de clics múltiples en los botones
  • Cómo implementar en jna una estructura sizeof () con un tipo de unión
  • ¿Cómo inyectar NativeModules no estáticos y bajo demanda en React Native Android?
  • Modo correcto de consulta de Android Kotlin Realm + devolución de elementos no administrados en Bg Thread
  • Ingrese los valores propios para combinarlos
  • Java Wildcard-types vs Kotlin Star-projection
  • getChildFragmentManager () no encontrado en kotlin
  • En kotlin, cómo devolver una instancia definida por un parámetro de class genérico
  • DataBinding no se puede usar en BaseActivity donde codigo en Kotlin