Digamos que tengo una matriz como esta:
val grid = Array(10) { IntArray(10) { 1 } }Y ahora quiero establecer algunos de ellos en 2 en su lugar. Yo podría hacer esto:
for (i in 0..5) { for (j in 0..5) { grid[i][j] = 2 } }Pero lo que me gustaría hacer es esto:
grid[0..5][0..5] = 2¿Hay alguna manera más rápida de hacerlo así?
Puedes lograr algo similar, por ejemplo:
grid[3..5, 2..4] = 5usando la siguiente función de extensión:
operator fun Array<IntArray>.set(outerIndices : IntRange, innerIndices : IntRange, newValue : Int) { for (i in outerIndices) { for (j in innerIndices) { this[i][j] = newValue } } } Si realmente quisiera algo como grid[3..5][2..4] = 5 , primero necesitaría implementar un getter para el primer IntRange que puede contener un ~builder con la referencia de matriz real para que la matriz real se puede ajustar en el set -llamada.