Как создать 2darray в kotlin объектов? [дубликат]

0

Вопрос

Я искренне потрясен тем, как трудно найти хорошее объяснение того, как создать 2d-массив в Котлине для объекта.

Это мои попытки из того, что я не нашел ни здесь, в стеке, ни в Интернете, ни в работе, почему? как создать 2d массив объектов, не встроенных в 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)
        }
    }

Там написано "null не может быть значением ненулевого типа", поэтому я предполагаю, что мне придется использовать arrayofnulls (), но не могу найти источник. Может ли кто-нибудь помочь мне или дать мне источник?

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

Лучший ответ

0

Вот как вы создаете 2D-массив в Котлине с помощью пользовательского объекта. ArrayofNulls позволяет установить все индексы в массиве равными нулю, а затем просто инициализировать их позже с помощью цикла for!

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

Угадайте, что вам даже не нужен цикл for, если вы собираетесь инициализировать массив, просто напишите val matrix : Array<Array<MyObject>> = Array(10){ Array(10){ MyObject() } } . В случае, если инициализация элементов зависит от индексов массива, вы можете написать val matrix : Array<Array<MyObject>> = Array(10){ i -> Array(10){ j -> MyObject(i,j) } }
Ricky Mo

Спасибо, я прав, думая, что это создаст матрицу 10х10?
francisRH

@francisRH Ну, и да, и нет. В Котлине нет многомерных массивов или матриц. Этот код создает массив из 10 массивов, и каждый внутренний массив имеет размер 10. Так что да, это похоже на матрицу 10x10, но, говоря точнее, это не 2d массив, а массив массивов.
broot

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................