¿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) 
  • El tipo inferido tipo no coincidente es Unidad, pero se esperaba Vacío
  • ¿Qué es la configuration de generateStubs en Kotlin?
  • Error o característica: Kotlin permite cambiar 'val' a 'var' en inheritance
  • Configuración de Kotlin vía gradle en eclipse
  • Cómo usar la anotación de Jackson JsonSubTypes en Kotlin
  • AsyncTask en Android con Kotlin
  • ¿Cómo orderar LinkedHashMap por valores en Kotlin?
  • ¿Existe alguna forma conveniente de crear classs de datos plotbles en Android con Kotlin?
  • Script de Gradle kotlin,> Complemento con id `kotlin` no encontrado
  • La combinación de cuadros de OpenCV solo da como resultado azul
  • Usando kotlin con jmockit