Como criar um 2darray em kotlin de objetos? [duplicado]

0

Pergunta

Estou realmente chocado em como é difícil encontrar uma boa explicação sobre como criar um array 2d de Kotlin para um objeto.

Estas são as minhas tentativas de que tenho encontrado nem aqui na pilha e on-line, nem trabalhar, por quê? como faço para criar um array 2d de objetos não construído em Kotlin!!!

var matrix : Array<Array<myObject?>> = null

//var arr2D = Array(10) { Array(10) { myObject(this) } }

for (i in 0 until 9) {
        for (j in 0 until 9) {
            matrix[i][j] = myObject(this)
        }
    }

Ele diz que "nulo não pode ser um valor não-nulo do tipo" então eu acho que eu tenho que usar um arrayofnulls(), mas não é possível encontrar uma fonte, alguém pode me ajudar ou me dar uma origem?

kotlin
2021-11-24 01:01:23
1

Melhor resposta

0

Essa é a forma de criar um Array 2D de Kotlin com um objeto feito. ArrayofNulls permite que você defina todos os índices na matriz nulo e, em seguida, basta inicializar-los mais tarde com um loop for!

    val matrix = Array(10) {
        arrayOfNulls<myObject?>(
            10
        )
    }
2021-11-24 01:23:23

Acho que, você não precisa mesmo de um loop for, se você estiver indo para inicializar a matriz, é só escrever val matrix : Array<Array<MyObject>> = Array(10){ Array(10){ MyObject() } } . No caso, a inicialização dos elementos depende da matriz de índices, você pode escrever val matrix : Array<Array<MyObject>> = Array(10){ i -> Array(10){ j -> MyObject(i,j) } }
Ricky Mo

Obrigado, eu estou certo em pensar que isso irá criar uma matriz 10x10?
francisRH

@francisRH Bem, sim e não. Kotlin não tem multidimensionais arrays ou matrizes. Este código cria um array de 10 matrizes e cada interior da matriz de tamanho 10. Então, sim, isso é semelhante à matriz 10x10, mas falando justamente ela não é um array 2d, mas a matriz de matrizes.
broot

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................