Ошибка при назначении массива в строку многомерного массива - PullRequest
0 голосов
/ 29 апреля 2018

Я пишу на Haxe и нацеливаюсь на Neko. Сегодня я столкнулся с этой проблемой:

var a:Array<Array<Int>> = new Array<Array<Int>>();
a[1] = [1, 2, 3];

Вторая строка выдает исключение «Недопустимый доступ к массиву». Также невозможно выполнить итерацию по строке следующим образом:

for (i in a[0]) ...

Такой код всегда работал нормально, но не сегодня. В чем может быть проблема здесь? Ячейки и строки, к которым я пытаюсь получить доступ, гарантированно существуют (если говорить об индексах).

1 Ответ

0 голосов
/ 29 апреля 2018

Эта проблема не относится к Neko: = new Array<Array<Int>>() только инициализирует внешний массив - это эквивалентно записи = []. Поскольку это пустой массив, любой доступ будет выходить за пределы и будет возвращать null.

В вашем конкретном примере = [[], []] исправит ошибку (инициализирует массив с двумя внутренними массивами). Если вы знаете заранее необходимое количество внутренних массивов, понимание массива - это удобный способ инициализации:

var a:Array<Array<Int>> = [for (i in 0...numInnerArrays) []];
...